Hi Leute,
ich brauch dringend Eure Hilfe!!!
Mit Hilfe eines Freunds habe ich die folgende Methode erstellt, die ein zweidimensionales Array auf Transitivität überprüft!!
Wie Ihr sieht speichere ich das ganze in ein ArryList und führe eine makeUnique Methode aus!
Nun möchte ich, dass er das gleiche zweidimensionale Array untersucht und die nicht transitiven speichert.
Hintergrund ist, wenn ich 100 Elemente habe und diese zu paaren kombiniere und in meinem zweidimensionalen Array nun das Paar [1,100] fehlt, würde er mir oben dies als transitiv ansehen. Ich möchte aber in "lastCheckedTupelArrayList" nur die Elemente die zueinander transitiv sind. Wenn ich also bei einem negativen Transitivitäts-Test [1,100] herausbekomme kann ich diese ja aus "lastCheckedTupelArrayList" entfernen!
Ich bin am verzweifeln!!!!!!
ich brauch dringend Eure Hilfe!!!
Mit Hilfe eines Freunds habe ich die folgende Methode erstellt, die ein zweidimensionales Array auf Transitivität überprüft!!
Java:
public void transitivelyTest(){
ArrayList lastCheckedTupelArrayList = new ArrayList();
Object[][]array = managerAlg.getCheckedNewTupelArrayKombo();
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i][1].equals(array[j][0])) {
// Suche eine Verbindung array[i][0] -> array[j][1]
// falls nicht vorhanden, ist die Relation nicht transitiv
boolean transitiv = false;
for (int k = 0; k < array.length; k++) {
if (array[i][0].equals(array[k][0])
&& array[j][1].equals(array[k][1])) {
transitiv = true;
lastCheckedTupelArrayList.add(array[i][0]);
lastCheckedTupelArrayList.add(array[i][1]);
lastCheckedTupelArrayList.add(array[j][0]);
lastCheckedTupelArrayList.add(array[j][1]);
lastCheckedTupelArrayList.add(array[k][0]);
lastCheckedTupelArrayList.add(array[k][1]);
// System.out.println("Verbindung von " + array[i][0]
// + " -> " + array[i][1] + " und "
// + array[j][0] + " -> " + array[j][1]
// + " und " + array[k][0] + " -> "
// + array[k][1]);
// Es kann weiter nach der gleichen Konstellation
// gesucht werden,
// muss aber nicht
}
else if (array[i][0].equals(array[k][1])
&& array[j][1].equals(array[k][0])) {
transitiv = true;
lastCheckedTupelArrayList.add(array[i][1]);
lastCheckedTupelArrayList.add(array[i][0]);
lastCheckedTupelArrayList.add(array[j][1]);
lastCheckedTupelArrayList.add(array[j][0]);
lastCheckedTupelArrayList.add(array[k][1]);
lastCheckedTupelArrayList.add(array[k][0]);
// System.out.println("Verbindung von " + array[i][1]
// + " -> " + array[i][0] + " und "
// + array[j][1] + " -> " + array[j][0]
// + " und " + array[k][1] + " -> "
// + array[k][0]);
// Es kann weiter nach der gleichen Konstellation
// gesucht werden,
// muss aber nicht
}
}
if (!transitiv) {
System.out.println("relation is not transitive");
}
}
}
}
System.out.println("Transitive!!!" + lastCheckedTupelArrayList);
int size = lastCheckedTupelArrayList.size();
String[] lastCheckedTupelArray = new String[size];
for (int i = 0; i < size; i++) {
lastCheckedTupelArray[i]=(String) lastCheckedTupelArrayList.get(i);
}
managerAlg.setLastCheckedArray(makeUnique(lastCheckedTupelArray));
//System.out.println(Arrays.toString(managerAlg.getLastCheckedArray()));
}
private static String[] makeUnique(String array[]){
return new LinkedHashSet<String>(Arrays.asList(array)).toArray(new String[0]);
}
Wie Ihr sieht speichere ich das ganze in ein ArryList und führe eine makeUnique Methode aus!
Nun möchte ich, dass er das gleiche zweidimensionale Array untersucht und die nicht transitiven speichert.
Hintergrund ist, wenn ich 100 Elemente habe und diese zu paaren kombiniere und in meinem zweidimensionalen Array nun das Paar [1,100] fehlt, würde er mir oben dies als transitiv ansehen. Ich möchte aber in "lastCheckedTupelArrayList" nur die Elemente die zueinander transitiv sind. Wenn ich also bei einem negativen Transitivitäts-Test [1,100] herausbekomme kann ich diese ja aus "lastCheckedTupelArrayList" entfernen!
Ich bin am verzweifeln!!!!!!