ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ поиска составляСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° расстояний ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ (ΠΈΠ· ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π±ΡƒΠΊΠ² выбираСтся блиТайшая ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ слова). Если Π±ΡƒΠΊΠ²Π° Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся Π΄Π»ΠΈΠ½Π° всСго Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°. Π’Π°Π±Π»ΠΈΡ†Π° прСдставляСт собой массив Π±Π°ΠΉΡ‚ (Distance), Π³Π΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ элСмСнта являСтся Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π±ΡƒΠΊΠ²Ρ‹ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ASCII. Если, вСдя поиск ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, обнаруТиваСтся, Ρ‡Ρ‚ΠΎ символ строки… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Π—Π°Π΄Π°Π½ΠΈΠ΅
  • РСшСниС
  • Π­Ρ‚Π°ΠΏ 1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
  • Π­Ρ‚Π°ΠΏ 2. ОписаниС структур Π΄Π°Π½Π½Ρ‹Ρ…
  • Π­Ρ‚Π°ΠΏ 3. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
  • Π­Ρ‚Π°ΠΏ 4. Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ B. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π—Π°Π΄Π°Π½ΠΈΠ΅

Π—Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поиск подстроки Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Боуэра ΠΈ ΠœΡƒΡ€Π°.

РСшСниС

Π­Ρ‚Π°ΠΏ 1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ опрСдСляСт Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ подстроки Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π»ΠΈΠ±ΠΎ опрСдСляСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ сдвиг для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Алгоритм:

1. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ смСщСниС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° строки P=0.

2. Если достигнут ΠΊΠΎΠ½Π΅Ρ† строки, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 9.

3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ символ строки Π½Π°Π΄ послСдним символом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°.

4. По Ρ‚Π°Π±Π»ΠΈΡ†Π΅ расстояний ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ сдвиг D.

5. Если D=0, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 6; ΠΈΠ½Π°Ρ‡Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ P=P+D ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 3.

6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

7. Если Π½Π΅Ρ‚ вхоТдСния, Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ P=P+D ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 3; ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 8.

8. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 10.

9. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 10.

10. ΠšΠΎΠ½Π΅Ρ† Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π­Ρ‚Π°ΠΏ 2. ОписаниС структур Π΄Π°Π½Π½Ρ‹Ρ…

Π’ΠΈΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… НаимСнованиС показатСля

БимвольноС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π’ΠΈΠΏ структуры

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ поиск MainStr Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ SubStr Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ S Π¦Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΉ Число

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ смСщСниС подстроки ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ строки P Π¦Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΉ Число

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ РасстояниС D Π¦Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΉ Число

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Π’Π°Π±Π»ΠΈΡ†Π° расстояний Distance ЦСлочислСнный Массив

Π­Ρ‚Π°ΠΏ 3. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Поиск Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° осущСствляСтся ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, описанному Π²Ρ‹ΡˆΠ΅.

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ поиска составляСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° расстояний ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ (ΠΈΠ· ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π±ΡƒΠΊΠ² выбираСтся блиТайшая ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ слова). Если Π±ΡƒΠΊΠ²Π° Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся Π΄Π»ΠΈΠ½Π° всСго Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°. Π’Π°Π±Π»ΠΈΡ†Π° прСдставляСт собой массив Π±Π°ΠΉΡ‚ (Distance), Π³Π΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ элСмСнта являСтся Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π±ΡƒΠΊΠ²Ρ‹ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ASCII.

Если, вСдя поиск ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, обнаруТиваСтся, Ρ‡Ρ‚ΠΎ символ строки Π½Π°Π΄ послСдним символом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π²Π΅Π½ Π΅ΠΌΡƒ (Ρ‚.Π΅. расстояниС Ρ€Π°Π²Π½ΠΎ 0), Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° опрСдСлСния вхоТдСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ смСщСния. Если Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ, Ρ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ поиск.

Если достигнут ΠΊΠΎΠ½Π΅Ρ† строки, Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ поиск с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сообщСния.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  1. Π’. П. НСкрасов ВСорСтичСская ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°. Π§Π°ΡΡ‚ΡŒ 2. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ дискрСтной ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ
  2. Π’. П. НСкрасов ВСорСтичСская ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°. Π§Π°ΡΡ‚ΡŒ 3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  3. Π’. П. НСкрасов ВСорСтичСская ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°. Π§Π°ΡΡ‚ΡŒ 4. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹
  4. ГалисССв Π“. Π’. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡ€Π΅Π΄Π΅ Delphi 7. Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ. М: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 2004.
  5. Π’.Π“. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° ΠŸΠ°ΡΠΊΠ°Π»Π΅ М.: Изд-Π²ΠΎ ПРИОР, 1998.-238 с.
  6. Павловская Π’. А. Паскаль. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня. ΠŸΠΈΡ‚Π΅Ρ€, 2004.
  7. М.Π•. Библия Delphi.-БПб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2007
  8. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-УнивСрситСт Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ http://www.INTUIT.ru ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ