Solved

Array Question - Strassens Method - Urgent

Posted on 2003-12-05
229 Views
Say Im implementing Strassens method for an array that is larger than 2x2(say 4x4 n=4). And say I calculated each sub array correctly (the 4 n/2 pieces) and I want to construct the new nxn matrix that holds the solution. Whats the easiest/most efficient way to reconstruct a larger array from the smaller pieces, just a for loop or is there something easier.
0
Question by:Akindo
• 2
• 2
• 2
• +1

Author Comment

ID: 9884020
Also, on the opp side of the question whats the easiest way to deconstruct the array in 4 n/2 pieces, basically the 4 quadrants...also a double for loop??
0

LVL 86

Accepted Solution

CEHJ earned 250 total points
ID: 9884198
Looping, AFAIK, can't be avoided, but you can System.arraycopy where there's subarrays, so every single element need not be looped over.
0

Author Comment

ID: 9884446
how would it work for a two dimensional array, say I have

a=2x2
b=2x2
c=2x2
d=2x2

and I want a 4x4 array like
ab
cd
whats the most efficient way to do that?

0

LVL 92

Expert Comment

ID: 9884779
Are you actually using 2d array in your internal representation, and is it that required.
0

LVL 2

Expert Comment

ID: 9885449
Maybe some tree structure coud simplify that;

class Matrix
{
Matrix parent;
int leafValue = null;
Matrix[][] children = null; //could be ArrayList
public Matrix(Matrix parent, int leafValue) //for leafs
{
this.parent = parent;
this leafValue = leafValue;
}
public Matrix(Matrix parent) //for nodes
{
this.parent = parent;
}
public int getValue() //possible modification for other data
{
if (children == null) return leafValue;
//calculate value of submatrix
int val = children[0][0].getValue()+children[1][1].getValue() ....//recurrent calls
return val;
}

}

I hope it help ;-)
0

LVL 2

Expert Comment

ID: 9885481
Above class can be modified fo keeping one data for each submatrixes - they shoud keep a range of data in global matrix...
0

LVL 92

Expert Comment

ID: 9885514
> and I want a 4x4 array like
> ab
> cd

int[][] result = new int[4][4];
for (int i=0; i<2; i++)
{
System.arraycopy(a[i], 0, result[i], 0, 2);
System.arraycopy(b[i], 0, result[i], 2, 2);
System.arraycopy(c[i], 0, result[i+2], 0, 2);
System.arraycopy(d[i], 0, result[i+2], 2, 2);
}
0

Featured Post

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This video teaches viewers about errors in exception handling.
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.