MatrixGenerator: more highlighting, complexity,
This commit is contained in:
parent
86c9c50a3c
commit
1e6c09a5bb
Binary file not shown.
@ -35,13 +35,10 @@ import algoanim.animalscript.AnimalScript;
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* - erste Folie die drei Schritte der Funktionsweise animieren
|
||||
* - Abschlussfolie(n) mit Komplexitätsbetrachtung der Funktion (sollte n^3 sein)
|
||||
* - Properties für Textfarbe usw. einfügen
|
||||
* - Benutzerinteraktionen einfügen
|
||||
* - Elemente der Matrizen A und B einfärben, wenn diese miteinander multipliziert werden.
|
||||
* - Texte nicht als SourceCode-Objekte, sonder als Textobjekte erstellen.
|
||||
* Somit können die Properties geändert werden.
|
||||
*
|
||||
* optional:
|
||||
* - Texte nicht als SourceCode-Objekte, sonder als Textobjekte erstellen. Somit können die Properties geändert werden.
|
||||
*
|
||||
*/
|
||||
|
||||
@ -70,6 +67,12 @@ public class MatrixGenerator implements Generator {
|
||||
*/
|
||||
private SourceCode info = null;
|
||||
|
||||
|
||||
/**
|
||||
* The statement text as a SourceCode object (last several slides)
|
||||
*/
|
||||
private SourceCode statement = null;
|
||||
|
||||
/**
|
||||
* The sourceCode
|
||||
*/
|
||||
@ -131,7 +134,7 @@ public class MatrixGenerator implements Generator {
|
||||
this.info = lang.newSourceCode(new Coordinates(10, 75), "info", null, TEXT_PROPS);
|
||||
this.info.addCodeLine("Das hier vorgestellte Verfahren eignet sich zur Multiplikation zweier Matrizen.", null, 0, null);
|
||||
this.info.addCodeLine("Zwei Matrizen können genau dann multipliziert werden, wenn die Spaltenanzahl der", null, 0, null);
|
||||
this.info.addCodeLine("linken Matrix mit der Zeilenanzahl der rechten Matrix übereinstimmen. ", null, 0, null);
|
||||
this.info.addCodeLine("linken Matrix mit der Zeilenanzahl der rechten Matrix übereinstimmt. ", null, 0, null);
|
||||
this.info.addCodeLine("Das Verfahren lässt sich leicht iterativ implementieren.", null, 0, null);
|
||||
this.info.addCodeLine("Die Funktioneweise ist hierbei wie folgt:", null, 0, null);
|
||||
this.info.addCodeLine("- Betrachte die i-te Zeile der linken Matrix und die i-te Spalte der rechten Matrix.", null, 1, null);
|
||||
@ -212,7 +215,7 @@ public class MatrixGenerator implements Generator {
|
||||
|
||||
String[][] data = new String[1][2];
|
||||
data[0][0] = "Summe = ";
|
||||
data[0][1] = "0";
|
||||
data[0][1] = "";
|
||||
|
||||
this.summe = lang.newStringMatrix(new Offset(15, 0, intMatrixB, AnimalScript.DIRECTION_E), data, "stumme", null);
|
||||
this.summe.changeColor(AnimationPropertiesKeys.FILL_PROPERTY, Color.WHITE, null, null);
|
||||
@ -250,9 +253,10 @@ public class MatrixGenerator implements Generator {
|
||||
lang.nextStep();
|
||||
sc.unhighlight(1);
|
||||
sc.highlight(2);
|
||||
|
||||
this.summe.put(0, 1, "0", null, null);
|
||||
int[][] result = new int[matrixA.length][matrixB[0].length]; // 1
|
||||
int summe = 0; // 2
|
||||
|
||||
int summetmp = 0;
|
||||
for(int i=0; i<matrixA.length; i++){ // 3
|
||||
//STEP
|
||||
@ -279,6 +283,8 @@ public class MatrixGenerator implements Generator {
|
||||
lang.nextStep();
|
||||
sc.unhighlight(5);
|
||||
sc.highlight(6);
|
||||
intMatrixA.highlightCell(i, k, highTime, unhighTime);
|
||||
intMatrixB.highlightCell(k, j, highTime, unhighTime);
|
||||
this.summe.put(0, 1, summetmp+"+("+matrixA[i][k]+"*"+matrixB[k][j]+")", null, null);
|
||||
this.summe.highlightCell(0, 1, highTime, unhighTime);
|
||||
result[i][j]=summe; // 7
|
||||
@ -286,6 +292,8 @@ public class MatrixGenerator implements Generator {
|
||||
lang.nextStep();
|
||||
sc.unhighlight(6);
|
||||
sc.highlight(7);
|
||||
intMatrixA.unhighlightCell(i, k, highTime, unhighTime);
|
||||
intMatrixB.unhighlightCell(k, j, highTime, unhighTime);
|
||||
this.summe.unhighlightCell(0, 1, highTime, unhighTime);
|
||||
intMatrixResult.highlightCell(i, j, highTime, unhighTime);
|
||||
intMatrixResult.put(i, j, summe, null, null);
|
||||
@ -316,9 +324,10 @@ public class MatrixGenerator implements Generator {
|
||||
|
||||
//STEP
|
||||
lang.nextStep();
|
||||
intMatrixResult.hide();
|
||||
ergebnis.hide();
|
||||
sc.hide();
|
||||
intMatrixResult.hide();
|
||||
generateHeader();
|
||||
|
||||
}
|
||||
|
||||
@ -326,9 +335,19 @@ public class MatrixGenerator implements Generator {
|
||||
* Generates the statement for the last slides
|
||||
*/
|
||||
private void generateStatement(){
|
||||
|
||||
|
||||
statement = lang.newSourceCode(new Coordinates(10, 75), "statement", null, TEXT_PROPS);
|
||||
statement.addCodeLine("Komplexität:", null, 0, null);
|
||||
statement.addCodeLine("Abschließend wollen wir noch einen kurzen Blick auf die Komplexität des Verfahrens werfen.", null, 0, null);
|
||||
statement.addCodeLine("Die kritischen Elemente des Algorithmus sind die drei verschachtelten Schleifen.", null, 0, null);
|
||||
statement.addCodeLine("Die äußere Schleife läuft über die Anzahl n der Zeilen der Matrix A.", null, 0, null);
|
||||
statement.addCodeLine("Die mittlere Schleife läuft über die Anzahl m der Spalten der Matrix B.", null, 0, null);
|
||||
statement.addCodeLine("Die innere Schleife läuft über die Anzahl p der Spalten von A.", null, 0, null);
|
||||
statement.addCodeLine("Durch Anwendung der Produktregel erhalten wir somit eine kubische Komplexität von O(n^3).", null, 0, null);
|
||||
//TODO: implement the statement for the last view slides!
|
||||
|
||||
//Zeilenazahl(A) * Spaltenanzahl(B) * Spaltenanzah(A)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -372,8 +391,8 @@ public class MatrixGenerator implements Generator {
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Das hier vorgestellte Verfahren eignet sich zur Multiplikation zweier Matrizen. Zwei Matrizen können genau dann" +
|
||||
"multipliziert werden, wenn die Spaltenanzahl der linken Matrix mit der Zeilenanzahl der rechten Matrix" +
|
||||
return "Das hier vorgestellte Verfahren eignet sich zur Multiplikation zweier Matrizen. Zwei Matrizen können genau dann " +
|
||||
"multipliziert werden, wenn die Spaltenanzahl der linken Matrix mit der Zeilenanzahl der rechten Matrix " +
|
||||
"übereinstimmt. Das Verfahren lässt sich leicht iterativ implementieren." +
|
||||
"<br>Die Funktioneweise ist hierbei wie folgt:" +
|
||||
"<br>- Betrachte die i-te Zeile der linken Matrix und die i-te Spalte der rechten Matrix." +
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user