Question

Ceci est une question sur le le plus long palindrome algorithme discuté ici il y a quelque temps. Le message cité , ce qui explique l'algorithme, dit: « pour choisir le prochain centre, prendre le centre le plus long suffixe approprié palindrome du palindrome courant » . Malheureusement, ils ne fournissent pas une preuve et je ne comprends pas vraiment pourquoi le prochain centre est au centre du plus long suffixe approprié palindrome du palindrome actuel .

Quelqu'un peut-il prouver / expliquer?

Était-ce utile?

La solution

Nous allons passer à droite ...

Supposons que votre palindrome « ??courant » est de 40 lettres grand. (Peut-être placé au centre de la position de dire 100.) Vous essayez de trouver un plus gros.

(OK, il pourrait y avoir un plus gros qui est de 900 lettres de long, et qui est de 50.000 lettres à droite -... Totalement étrangers avec celui-ci qui va bien mais nous y reviendrons à l'avenir pour l'instant , nous devons déplacer le centre vers la droite tout en recherchant plus-que-40 palindromes. sens?)

Nous devons donc passer à droite - nous pourrions faire un pas. Mais nous voulons aller aussi loin que possible sans manquer aucune.

Maintenant, si la prochaine à droite va inclure celui-ci ... en fait, il doit inclure le plus à droite lettre de ce groupe de 40 (il ne peut pas être plus à gauche, comme nous l'avons déjà vérifié, donc, il faut centrer après 100, et, parce que ça va être plus de 40 , il faut comprennent notre lettre droite , # 120).

Alors, comment loin nous devons aller?

Eh bien, vous ne pouvez pas revenir en arrière (120) plus d'un palindrome ! Si ce n'est pas un palindrome au milieu, il ne sera jamais un palindrome.

3333333333333331110111

Vous ne pouvez aller « retour » au 0. 1 assis à gauche du 0 (par exemple), ne pourrait jamais être un palindrome.

Il est donc aussi simple que cela. Vous devez inclure notre lettre extrême droite (si nous allons inclure chacun d'entre nous du tout), et vous voulez qu'il soit aussi grand que possible, et il doit être un palindrome parce palindromes ne peut commencer (je veux dire "à partir du milieu") avec palindromes .

dans l'exemple ci-dessus, il est impossible que le 1 à gauche ou 0, ou disons plus à droite 3, pourrait jamais dans ce centre de l'univers un palindrome, peu importe ce que nous trouvons plus tard à droite. Ils n'ont pas palindromes autour d'eux, afin qu'ils puissent « être jamais » un centre de palindrome!

Notez que le 3 au milieu des 3s pourrait peut-être un plus grand centre palindrome .... et ne pas oublier que nous avons déjà vérifié c'est le le plus long palindrome jusqu'à présent (en fonction des centres, de la gauche), de sorte que ne peut pas être vrai.

Ainsi, toute palindrome qui est plus long que celui-ci - plutôt, le prochain point de départ possible pour un palindrome plus longtemps que celui-ci -. Est que 0

En d'autres termes, il est tout simplement le centre du plus grand palindrome nous avons à droite. (Donc, pas le « 111 », qui est un palindrome, mais à court, mais le « 1110111 » qui est la plus longue, vous pouvez voir Palindrome coincé à droite.)

En effet, les deux possibilités que nous devons vérifier sont (A) le « 0 » et (B) le « 1 » à la deuxième place dernière. bien sûr, entre ces deux possibilties, nous devons aller de gauche à droite, alors (A) le « 0 » est en effet la suivante pour vérifier.

Ne pas oublier les deux (0 et 1 en question) sont équivalentes à dire « il y a un palindrome 1110111 collé à la fin, et il y a un palindrome plus court 111 collé à la fin ».

Bien sûr 1110111 est plus longue, de sorte que le centre de 1.110.111 est évidemment à gauche du centre de 111.

Le plus long palindrome collé à droite, sera d'avoir bien entendu le centre le plus proche de la gauche.

Alors, espérons que clairement que la partie spécifique de la discussion sur le blog lié, qui, vous a demandé !!! Je me répétais délibérément dans un certain nombre de façons, nous espérons qu'il aide. Il est des algorithmes jungiens jour:)

Encore une fois s'il vous plaît noter que je suis spécifiquement et essaie seulement de clarifier la question très précise Michael a demandé au sujet.

sanglante confusion hein?

BTW, je simplement ignoré la question de caractère sur les centres off caractères -. Mais il est hors de propos pour comprendre ce que vous avez demandé au sujet

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top