Найти Π² Π”Π·Π΅Π½Π΅
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸπŸ’Ό ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ собСсСдованию ΠΏΠΎ Python: Ρ€Π΅ΡˆΠ°Π΅ΠΌ 5 интСрСсных Π·Π°Π΄Π°Ρ‡

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π½Π° ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, вычисляСм расстояниС Π”Π°ΠΌΠ΅Ρ€Π°Ρƒ-Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π° ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π—Π°Π΄Π°Π½ΠΈΠ΅ 1 ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, Ρ†ΠΈΡ„Ρ€Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСрСставлСны Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. НапримСр, Ссли Π²Π²Π΅Π΄Π΅Π½ΠΎ число 561, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ 165, Π° Ссли -578, Ρ‚ΠΎ -875. Π Π΅ΡˆΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ двумя способами – с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² строк ΠΈ Π±Π΅Π·. КакоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ эффСктивно? РСшСниС ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² строк Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ максимально просто: Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±Π΅Π· использования строк Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» while, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° num_remaining Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: НапримСр, Ссли num Ρ€Π°Π²Π½ΠΎ 123, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° result станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 3, Π° num_remaining станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 12. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ result станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 32, Π° num_remaining станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 1. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ result станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 321, Π° num_remaining станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅
ОглавлСниС

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π½Π° ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, вычисляСм расстояниС Π”Π°ΠΌΠ΅Ρ€Π°Ρƒ-Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π° ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

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

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, Ρ†ΠΈΡ„Ρ€Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСрСставлСны Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. НапримСр, Ссли Π²Π²Π΅Π΄Π΅Π½ΠΎ число 561, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ 165, Π° Ссли -578, Ρ‚ΠΎ -875. Π Π΅ΡˆΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ двумя способами – с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² строк ΠΈ Π±Π΅Π·. КакоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ эффСктивно?

РСшСниС

ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² строк Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ максимально просто:

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±Π΅Π· использования строк Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» while, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° num_remaining Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ result Π½Π° 10 ΠΈ прибавляСм ΠΊ Π½Π΅ΠΌΡƒ остаток ΠΎΡ‚ дСлСния num_remaining Π½Π° 10 (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послСдняя Ρ†ΠΈΡ„Ρ€Π° числа num_remaining становится ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ числа result).
  • Π—Π°Ρ‚Π΅ΠΌ num_remaining дСлится Π½Π°Ρ†Π΅Π»ΠΎ Π½Π° 10, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСднюю Ρ†ΠΈΡ„Ρ€Ρƒ.
  • ПослС окончания Ρ†ΠΈΠΊΠ»Π° возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ result, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ссли исходноС число num Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚ΠΎ возвращаСтся -result.

НапримСр, Ссли num Ρ€Π°Π²Π½ΠΎ 123, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° result станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 3, Π° num_remaining станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 12. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ result станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 32, Π° num_remaining станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 1. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ result станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 321, Π° num_remaining станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π°. Π’ ΠΈΡ‚ΠΎΠ³Π΅ функция Π²Π΅Ρ€Π½Π΅Ρ‚ число 321. ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ – O(n), Π³Π΄Π΅ n Ρ€Π°Π²Π½ΠΎ числу Ρ†ΠΈΡ„Ρ€ Π² числС:

Π‘Ρ€Π°Π²Π½ΠΈΠΌ быстродСйствиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

РСшСниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ быстрСС:

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ встроСнная функция [::-1] для инвСртирования строки Π² Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° C-ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с символами.

🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

πŸπŸ’Ό Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ Python

ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ PythonΒ»

🧩🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

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

ВычислитС частноС ΠΎΡ‚ дСлСния x Π½Π° y, Π³Π΄Π΅ Ρ… ΠΈ y – Ρ†Π΅Π»Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. ДопустимыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ – слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг.

РСшСниС

Π­Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡ΠΊΠ° с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ – ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ y Π² Ρ†ΠΈΠΊΠ»Π΅ вычитаСтся ΠΈΠ· x Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° остаток Π½Π΅ станСт мСньшС, Ρ‡Π΅ΠΌ y, окаТСтся самым Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΌ. НапримСр, Ссли y = 1, a x = 231 –1, для вычислСния потрСбуСтся 231 – 1 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ:

Π‘ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

  • Найти наибольшСС число k, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ 2k y <= x.
  • Π’Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ 2k y ΠΈΠ· x.
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 2k ΠΊ частному.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Ρ… = (1011)2 ΠΈ y = (10)2, Ρ‚ΠΎ k = 2, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 2 * 22 <= 11 ΠΈ 2 * 23 > 11. ΠœΡ‹ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ (1000)2 ΠΈΠ· (1011)2, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ (11)2, добавляСм 2k = 22 = (100)2 ΠΊ частному, ΠΈ обновляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x = (11)2.

Π“Π»Π°Π²Π½Ρ‹Π΅ прСимущСства ΠΏΡ€ΠΈ использовании 2k y – это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ эффСктивно вычисляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π²Π΄Π²ΠΎΠ΅ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. Однако наш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ всС Π΅Ρ‰Π΅ Π΄Π°Π»Π΅ΠΊ ΠΎΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π°: Ссли для прСдставлСния частного ΠΎΡ‚ дСлСния x Π½Π° y потрСбуСтся n Π±ΠΈΡ‚ΠΎΠ², вычислСниС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π·Π° O(n) ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Если наибольшСС k, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ 2k y <= x, вычисляСтся ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· k, каТдая итСрация ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n), Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ O(n2) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ.

Π‘ΠΎΠ»Π΅Π΅ эффСктивный способ Π½Π°ΠΉΡ‚ΠΈ k Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ – ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ k ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ. Π’ΠΎ Π΅ΡΡ‚ΡŒ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ 20y, 21y, 22y мСньшС Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½ΠΎ x, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ обнаруТСния k, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ 2k y <= x, Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… итСрациях с x Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ 2k-1y, 2k-2, 2k-3y ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ послС обнаруТСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ k Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ частного Ρ€Π°Π²Π½ΠΎ (100)2 ΠΊ, Π° x = (11)2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ наибольшСС число k, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ 2k y <= (11)2 Ρ€Π°Π²Π½ΠΎ 0, поэтому ΠΌΡ‹ добавляСм 20 = (1)2 ΠΊ частному, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ послС этого Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ (101)2. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ†ΠΈΠΊΠ» с (11)2 – (10)2 = (1)2. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ (1)2 < y, вычислСниС Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ – частноС Ρ€Π°Π²Π½ΠΎ (101)2, остаток Ρ€Π°Π²Π΅Π½ (1)2. По сути, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ примСняСт Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ вычитания ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ числам ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±ΠΈΡ‚ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° power разрядов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это соотвСтствуСт ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° 2**power. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ сдвиг ΠΈ опСрация слоТСния Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ О(1), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ O(n):

Π‘Ρ€Π°Π²Π½ΠΈΠΌ врСмя выполнСния брутфорсного ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

πŸ’Ό Вакансии ΠΏΠΎ Python, Django, Flask

Π›ΡƒΡ‡ΡˆΠΈΠ΅ вакансии ΠΈΠ· ΠΌΠΈΡ€Π° Python @pydevjob

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

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ тСкст text ΠΈ подстрока st. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния st Π² text.

РСшСниС

Брутфорсный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»:

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° O(nm), Π³Π΄Π΅ n – Π΄Π»ΠΈΠ½Π° тСкста, Π° m – Π΄Π»ΠΈΠ½Π° подстроки. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² поиска подстроки – Π‘ΠΎΠΉΠ΅Ρ€Π°-ΠœΡƒΡ€Π°, Π Π°Π±ΠΈΠ½Π°-ΠšΠ°Ρ€ΠΏΠ° ΠΈΠ»ΠΈ ΠšΠ½ΡƒΡ‚Π°-ΠœΠΎΡ€Ρ€ΠΈΡΠ°-ΠŸΡ€Π°Ρ‚Ρ‚Π°. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Π Π°Π±ΠΈΠ½Π°-ΠšΠ°Ρ€ΠΏΠ° – Π΅Π³ΠΎ прСимущСство Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ…Π΅ΡˆΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ быстро, Π° ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ строки приходится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ совпадСнии Ρ…Π΅ΡˆΠ΅ΠΉ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт поиск ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ всСх срСзов подряд:

Π’Ρ‹Π²ΠΎΠ΄:

ΠŸΡ€ΠΈ условии ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ врСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π²Π½Π° O(n+m).

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

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ симмСтричности Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²:

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ симмСтричны, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ – Π½Π΅Ρ‚.

РСшСниС

Π’ соотвСтствии с условиСм симмСтричным Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ считаСтся Π΄Π΅Ρ€Π΅Π²ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ симмСтрично ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния структуры, ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡƒΠ·Π»ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π° ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ. ВрСмСнная ΠΈ пространствСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° – O(n), Π³Π΄Π΅ n – число ΡƒΠ·Π»ΠΎΠ². ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли вмСсто создания отраТСния Ρ†Π΅Π»ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² – врСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° O(n), Π° пространствСнная – O(h), Π³Π΄Π΅ h – высота Π΄Π΅Ρ€Π΅Π²Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² условии Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ:

Π’Ρ‹Π²ΠΎΠ΄:

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

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для подсчСта количСства ΠΏΡ€Π°Π²ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку S1 Π² строку S2. НапримСр, для прСобразования слова Β«Π»ΠΈΠΌΡƒΠ·ΠΈΠ½Β» Π² Β«Π»ΠΈΠΌΠΎΠ½Π°Π΄Β» Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ 4 ΠΏΡ€Π°Π²ΠΊΠΈ, Π° для привСдСния слова «кошка» ΠΊ слову Β«ΠΊΠΎΡ„Ρ‚Π°Β» достаточно 2 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

РСшСниС

Брутфорсный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ – ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ всС строки, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° 1, 2, 3 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ символов ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку. Π’ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ 2n Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ – Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ вычислСния расстояния Π”Π°ΠΌΠ΅Ρ€Π°Ρƒ-Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π°.

РасстояниС Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π°, Ρ‚Π°ΠΊΠΆΠ΅ извСстноС ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ расстояниС – это ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для измСрСния Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя строками. РасстояниС опрСдСляСт минимальноС количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ вставки, удалСния ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ символов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для прСобразования ΠΎΠ΄Π½ΠΎΠΉ строки Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… автоматичСской ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, сравнСнии тСкстовых строк ΠΈ Ρ‚.ΠΏ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ вычислСния расстояния Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π° выглядит Ρ‚Π°ΠΊ:

1. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ строки S1 ΠΈ S2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ. ΠœΡ‹ создаСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ M Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ (len(S1) + 1) x (len(S2) + 1). КаТдая ячСйка ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ M[i][j] Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ минимальноС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ подстроками S1[0:i] ΠΈ S2[0:j].

2. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ пСрвая строка ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ M: Π² ячСйку M[i][0] ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i, Π° Π² ячСйку M[0][j] ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ j, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для прСвращСния пустой строки Π² S1 ΠΈΠ»ΠΈ S2 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ i ΠΈΠ»ΠΈ j ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ вставки ΠΈΠ»ΠΈ удалСния соотвСтствСнно.

3. Π—Π°Ρ‚Π΅ΠΌ заполняСм ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ M. Для этого рассматриваСм ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ символов S1[i-1] ΠΈ S2[j-1]. Если ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎ M[i][j] просто Ρ€Π°Π²Π½ΠΎ M[i-1][j-1], ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, M[i][j] Ρ€Π°Π²Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

  • M[i-1][j] + 1 (ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ символа ΠΈΠ· S1)
  • M[i][j-1] + 1 (вставка символа Π² S1)
  • M[i-1][j-1] + 1 (Π·Π°ΠΌΠ΅Π½Π° символа Π² S1 Π½Π° символ ΠΈΠ· S2)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – Π² Π½ΠΈΠΆΠ΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ M (M[len(S1)][len(S2)]) окаТСтся минимальноС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ строками S1 ΠΈ S2. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ количСству ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ вставки, удалСния ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для прСобразования S1 Π² S2. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядит ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° вычислСния расстояния Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π° для слов «кошка» ΠΈ Β«ΠΊΠΎΡ„Ρ‚Π°Β»:

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ – O(len(s1)*len(s2)):

Π’Ρ‹Π²ΠΎΠ΄:

***

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅