Guest User

Untitled

a guest
Jul 16th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. package uebungen;
  2.  
  3. public class EditDistanz implements IStringDistance {
  4.  
  5. public double getDistance(String a, String b)
  6. {
  7.  
  8. //erstellen einen 2-Dim.Array mit der zu vergleichenden Woertern
  9. double[][] d = new double[a.length() + 1][b.length() + 1];
  10. int i, j, cost;
  11.  
  12. //wandeln die Strings ind char-Arrays um
  13. char[] str1 = a.toCharArray();
  14. char[] str2 = b.toCharArray();
  15.  
  16. //fuellt die erste Spalte
  17. for (i = 0; i <= str1.length; i++)
  18. {
  19. d[i][0] = i;
  20. }
  21.  
  22. //fuellt die erste Zeile
  23. for (j = 0; j <= str2.length; j++)
  24. {
  25. d[0][j] = j;
  26. }
  27.  
  28. // Die Definition der Berechnung der Edit-Distanz wird umgesetzt (nach skript)
  29. for (i = 1; i <= str1.length; i++)
  30. {
  31. for (j = 1; j <= str2.length; j++)
  32. {
  33. if (str1[i - 1] == str2[j - 1])
  34. {
  35. cost = 0;
  36. } else
  37. cost = 1;
  38.  
  39.  
  40. d[i][j] = Math.min(d[i - 1][j] + 1, Math.min(d[i][j - 1] + 1,
  41. d[i - 1][j - 1] + cost));
  42.  
  43. if ((i > 1) && (j > 1) && (str1[i - 1] == str2[j - 2])
  44. && (str1[i - 2] == str2[j - 1])) {
  45. d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);
  46. }
  47. }
  48. }
  49. //eigentliche Distanz wird zurueckgegeben (Feld unten rechts in der Tabelle)
  50. return d[str1.length][str2.length];
  51. }
  52.  
  53. public static void main(String[] args) {
  54.  
  55. // Eingabe der 2 Woerter die Verglichen werden sollen
  56.  
  57. /* Falls variable Abfrage benoetigt:
  58. String wordx;
  59. String wordy;
  60. wordx = javax.swing.JOptionPane.showInputDialog("bitte das erste Wort eingeben: ");
  61. System.out.println("ihre Eingabe war: " + wordx); wordy =
  62. javax.swing.JOptionPane.showInputDialog("nun Wort 2: ");
  63. System.out.println("ihre Eingabe war: " + wordy); */
  64.  
  65. // Die Klasse selbst wird erstellt und auf die Methode getDistance
  66. // angewand
  67. EditDistanz editDistanz = new EditDistanz();
  68. HammingDistance hamming = new HammingDistance();
  69. // System.out.println("Wort A und Wort B "+editDistanz.getDistance(wordx, wordy)); //(variable Abfrage)
  70. System.out.println("Edit: S1 und S2: "+editDistanz.getDistance("Der Hunne Attila","Die Stadt Manila"));
  71. System.out.println("Edit: S1 und S3: "+editDistanz.getDistance("Der Hunne Attila","Die Henne Ottili"));
  72. System.out.println("Edit: S2 und S3: "+editDistanz.getDistance("Die Stadt Manila","Die Henne Ottili"));
  73. System.out.println("Hamming: S1 und S2: "+hamming.getDistance("Der Hunne Attila","Die Stadt Manila"));
  74. System.out.println("Hamming: S1 und S3: "+hamming.getDistance("Der Hunne Attila","Die Henne Ottili"));
  75. System.out.println("Hamming: S2 und S3: "+hamming.getDistance("Die Stadt Manila","Die Henne Ottili"));
  76.  
  77.  
  78. /*Ergebnisse der 4.3
  79. * s1 zu s2 mit edit: 10.0 // mit Hamming: 10.0
  80. * s1 zu s3 mit edit: 5.0 // mit Hamming: 5.0
  81. * s2 zu s3 mit edit: 9.0 // mit Hamming: 9.0
  82. * */
  83. }
  84. }
Add Comment
Please, Sign In to add comment