Toto je starší verze dokumentu!
Jak na to
Myšlenka řešení:
Vztah mezi dvěma slovy existuje, pokud prováděním u jednoho slova nejvíc L operací (přidání, odebrání jednoho znaku a substituce jednoho znaku na druhý) dostanu druhé slovo. Tohle je přesně Levenshteinova vzdálenost (LD). K vytvoření grafu stačí tedy spočítat LD mezi každými 2 slovy (uzly). Je-li LD mezi slovy W1 a W2 ⇐ L, pak existuje hrana mezi nimi.
Po vytvoření grafu pak stačí spustit BFS z každého uzlu. V každém kroku BFS budeme pamatovat vzdálenost. Zde vzdálenost je v podstatě počet větví stromu, který mi vytvoří BFS. Tedy na začátku to bude 0 u rootu a pak 1 v druhé větvi, pak 2 v třetí atd. Stačí potom pamatovat nejdelší dosud spočítanou vzdálenost - a to je řešení, které zobrazit po spuštěním BFS z každého uzlu.
Nahoru