[Algorytmika]najmniejsze słowo zawierające dwa słowa

Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[Algorytmika]najmniejsze słowo zawierające dwa słowa

Post autor: leg14 »

Mamy dane dwa słowa -\(\displaystyle{ u,v}\)- nad alfabetem \(\displaystyle{ \left\{ a,b\right\}}\) tej samej długości. Chcemy znaleźć najkrótsze słowo \(\displaystyle{ w}\) takie, że \(\displaystyle{ a,b}\) się w nim zawierają.
jasne jest, że to słowo będzie postaci \(\displaystyle{ u \cdot y = x \cdot v}\) lub \(\displaystyle{ x \cdot u = v \cdot y}\) gdzie \(\displaystyle{ x,y}\) to jakieś słowa tej samej długości (w najbardziej beznadziejnym przypadku będzie \(\displaystyle{ x = u,y=v}\) ).
Pytanie jak to zaimplementować, żeby było szybko? Jedyne rozwiązanie, jakie mi przychodzi do głowy, to oczywiście chamskie \(\displaystyle{ O(n^2)}\) .
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

Re: [Algorytmika]najmniejsze słowo zawierające dwa słowa

Post autor: bartek118 »

Najpierw trzeba sprawdzić, czy jedno słowo nie siedzi już w drugim. Jeśli nie, to może jakby znaleźć najdłuższy wspólny prefiks \(\displaystyle{ u}\) i sufiks \(\displaystyle{ v}\) (a potem odwrotnie) i tak je skleić?
ODPOWIEDZ