Wie die Berechnung "kürzeste Entfernung" zwischen zwei Wörtern?
Kürzlich hatte ich ein interview und ich wurde gebeten zu schreiben, einen Algorithmus zu finden, die minimale Anzahl von 1 Brief verpasst zu bekommen von einem bestimmten Wort zu einem bestimmten Wort , D. H. Cat->Wiege->Zahn->Hund
Ich will nicht die Lösung des Problems einfach mich durch, Wie kann ich die Verwendung von BFS in diesem Algorithmus ?
- Ich glaube, Sie suchen nach einem besseren Algorithmus als das BFS.
- Ein standard-BFS Umsetzung wird gut. Nur im Kopf behalten für ein BFS: "[Priorität] - Warteschlange" .. ansonsten, was haben Sie versucht? (Siehe die standard wikipedia-Artikel für übersichten .. die erklären, eine BFS-Implementierung eher einfach.)
- Sind Sie sicher, dass keine anderen Anforderungen? Ansonsten können Sie nur Scannen Sie das Wort, spiegeln Figuren wie erforderlich.
- Das ist verwirrend ? Sind die beiden Wörter die gleiche Länge ? Was ist falsch mit akappa Lösung ?
- Tun, die zwischen "Worten" werden müssen, um die tatsächlichen Wörter aus einem Wörterbuch gegeben? Oder wäre "Cat->Dat->Dag->Hund" akzeptabel, auch wenn "Dat" ist nicht ein Wort?
- duplizieren stackoverflow.com/questions/1521958/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
gemäß dieser scrabble-Liste, der kürzeste Weg zwischen Katze und Hund ist:
['CAT', 'COT', 'KOGGE', 'HUND']
Als bonus bekommen wir die am weitesten:
This lets potential answerers know that they SHOULD guide the student in solving the problem, and SHOULD NOT simply show the complete answer.
Bitte vermeiden Sie dies in ZukunftAuf den ersten Blick habe ich natürlich über Die Levenshtein-Distanz aber Sie verwenden müssen, BFS. Also ich denke, dass Sie beginnen sollten, aus dem Gebäude Struktur. Wort sollte root sein und dann nächsten Knoten sind Worte, die ersten Buchstaben geändert. Next Knoten geändert haben, zweiter Brief. Beim erstellen der Grafik, die Sie verwenden, BFS und wenn finden Sie neue word-speichern-Pfad Länge. Am Ende des Algorithmus wählen Sie die minimale Distanz.
Beginnen, nur mit dem starten von word in Ihrem Pfad gesetzt werden.
Wenn der Schluss-Wort von jedem Pfad in Ihrem Pfad gesetzt werden, ist das gewünschte Wort, aufhören, dass Pfad den gewünschten Pfad.
Ersetzen Sie jeden Pfad in die path-set mit allen möglichen Pfad, beginnt mit diesem Weg, aber ein Wort mehr.
Gehen Sie zu Schritt 2.
Wenn wir anfangen zu bauen einen gerichteten azyklischen Graphen aus der Ziel-Wort, um die Quelle zu Wort, die in einem Breite-Weise Mode, und wir machen ein Wörterbuch look-up um zu überprüfen, ob wir gesehen haben, das Wort oben in dem Baum, während Sie durch das Wort, dann das erste vorkommen des Quell-Wort geben sollten, den kürzesten Weg in der umgekehrten Richtung, aus dem 'target-Wort' der 'Ausgangswort'.
Daraus können wir drucken, den Weg von der 'Quelle' zum 'Ziel'