Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package uebungen;
- public class EditDistanz implements IStringDistance {
- public double getDistance(String a, String b)
- {
- //erstellen einen 2-Dim.Array mit der zu vergleichenden Woertern
- double[][] d = new double[a.length() + 1][b.length() + 1];
- int i, j, cost;
- //wandeln die Strings ind char-Arrays um
- char[] str1 = a.toCharArray();
- char[] str2 = b.toCharArray();
- //fuellt die erste Spalte
- for (i = 0; i <= str1.length; i++)
- {
- d[i][0] = i;
- }
- //fuellt die erste Zeile
- for (j = 0; j <= str2.length; j++)
- {
- d[0][j] = j;
- }
- // Die Definition der Berechnung der Edit-Distanz wird umgesetzt (nach skript)
- for (i = 1; i <= str1.length; i++)
- {
- for (j = 1; j <= str2.length; j++)
- {
- if (str1[i - 1] == str2[j - 1])
- {
- cost = 0;
- } else
- cost = 1;
- d[i][j] = Math.min(d[i - 1][j] + 1, Math.min(d[i][j - 1] + 1,
- d[i - 1][j - 1] + cost));
- if ((i > 1) && (j > 1) && (str1[i - 1] == str2[j - 2])
- && (str1[i - 2] == str2[j - 1])) {
- d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);
- }
- }
- }
- //eigentliche Distanz wird zurueckgegeben (Feld unten rechts in der Tabelle)
- return d[str1.length][str2.length];
- }
- public static void main(String[] args) {
- // Eingabe der 2 Woerter die Verglichen werden sollen
- /* Falls variable Abfrage benoetigt:
- String wordx;
- String wordy;
- wordx = javax.swing.JOptionPane.showInputDialog("bitte das erste Wort eingeben: ");
- System.out.println("ihre Eingabe war: " + wordx); wordy =
- javax.swing.JOptionPane.showInputDialog("nun Wort 2: ");
- System.out.println("ihre Eingabe war: " + wordy); */
- // Die Klasse selbst wird erstellt und auf die Methode getDistance
- // angewand
- EditDistanz editDistanz = new EditDistanz();
- HammingDistance hamming = new HammingDistance();
- // System.out.println("Wort A und Wort B "+editDistanz.getDistance(wordx, wordy)); //(variable Abfrage)
- System.out.println("Edit: S1 und S2: "+editDistanz.getDistance("Der Hunne Attila","Die Stadt Manila"));
- System.out.println("Edit: S1 und S3: "+editDistanz.getDistance("Der Hunne Attila","Die Henne Ottili"));
- System.out.println("Edit: S2 und S3: "+editDistanz.getDistance("Die Stadt Manila","Die Henne Ottili"));
- System.out.println("Hamming: S1 und S2: "+hamming.getDistance("Der Hunne Attila","Die Stadt Manila"));
- System.out.println("Hamming: S1 und S3: "+hamming.getDistance("Der Hunne Attila","Die Henne Ottili"));
- System.out.println("Hamming: S2 und S3: "+hamming.getDistance("Die Stadt Manila","Die Henne Ottili"));
- /*Ergebnisse der 4.3
- * s1 zu s2 mit edit: 10.0 // mit Hamming: 10.0
- * s1 zu s3 mit edit: 5.0 // mit Hamming: 5.0
- * s2 zu s3 mit edit: 9.0 // mit Hamming: 9.0
- * */
- }
- }
Add Comment
Please, Sign In to add comment