для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ часто ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ: Π½Π°ΠΉΡ‚ΠΈ элСмСнт с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ свойствами, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сортировку ΠΈ Ρ‚. ΠΏ. Но ΠΊΠ°ΠΊ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ достигнута, Π½Π΅ выполняя Ρ†ΠΈΠΊΠ» нСпосрСдствСнно? Π’ этом Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°.

Рассмотрим использованиС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ поиска индСкса наимСньшСго элСмСнта Π² цСлочислСнном массивС.

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, входящиС Π² ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» истинным Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° выполнСния Ρ†ΠΈΠΊΠ»Π°:

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° && УсловиС_окончания_Ρ†ΠΈΠΊΠ»Π° => ЦСль Ρ†ΠΈΠΊΠ»Π°

ВмСсто условия окончания ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ условиС выполнСния Ρ†ΠΈΠΊΠ»Π°. Π’ нашСм случаС это: nextToCheck (ΠΏΠΎΠΊΠ° Π΅ΡΡ‚ΡŒ элСмСнты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ). Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ (станСт Π»ΠΎΠΆΠ½Ρ‹ΠΌ), Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° прСкратится

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π² ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΈ обСспСчив Π΅Π³ΠΎ сохранСниС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ достиТСниС Ρ†Π΅Π»ΠΈ, Π½Π΅ выполняя сам Ρ†ΠΈΠΊΠ».

Вопросы для самопровСрки ΠΏΡ€ΠΈ составлСнии Ρ†ΠΈΠΊΠ»ΠΎΠ²:

ΠŸΡ€ΠΈ составлСнии Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ понятиС области нСопрСдСлСнности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ. ΠžΠ±Π»Π°ΡΡ‚ΡŒ измСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π·Π°Π΄Π°Ρ‡ΠΈ (Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: [0,n)) ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ части: ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΉΠ΄Π΅Π½ TemporarySmallest : [0,nextToCheck) ) ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ нСопрСдСлСнности ( [nextToCheck,n) ). НСобходимо ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ нСопрСдСлСнности ΡΠΎΠΊΡ€Π°Ρ‰Π°Π»Π°ΡΡŒ.

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

НСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ numSorted :

Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° истинным.

На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ количСство numSorted увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ этого Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ, выбираСтся наимСньший срСди ΠΏΠ΅Ρ€Π²Ρ‹Ρ… [0,n-numSorted) нСотсортированных элСмСнтов, ΠΈ мСняСтся мСстами (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ swap() ) c элСмСнтом n-numSorted

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, отсортированный «Ρ…Π²ΠΎΡΡ‚» массива всякий Ρ€Π°Π· удлиняСтся Π½Π° ΠΎΠ΄ΠΈΠ½ элСмСнт, Π° нСотсортированная «Π³ΠΎΠ»ΠΎΠ²Π°» ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ.

Π§Ρ‚ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ

Π’ΠΈΡ€Ρ‚ Н. Алгоритмы + структуры Π΄Π°Π½Π½Ρ‹Ρ… = ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ циклаНачнСм, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, с Π·Π°Π΄Π°Ρ‡ΠΊΠΈ. Π’ строкС, содСрТащСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° счСтчик ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠΉ символ. НапримСр, ΠΈΠ· строки Β« abcdddddddddefggggggggggggggggggx Β» ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Β« abc 9 def 18 gx Β». Π˜Π·Π²Π΅Ρ‡Π½Ρ‹ΠΉ вопрос русской ΠΈΠ½Ρ‚Π΅Π»Π»ΠΈΠ³Π΅Π½Ρ†ΠΈΠΈ: Β«Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?Β».

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄ рассуТдСний: Β«Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ строку Π² Ρ†ΠΈΠΊΠ»Π΅. Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ фрагмСнт…» содСрТит ΠΎΠ΄Π½Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π½Π΅Π΄ΠΎΡΠΊΠ°Π·Π°Π½Π½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ процСсс обнаруТСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° связан с Ρ†ΠΈΠΊΠ»ΠΎΠΌ посимвольного просмотра Π½Π΅ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ символов. Π­Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс – Ρ†ΠΈΠΊΠ», ΠΈΠ»ΠΈ ΠΎΠ½ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ.

// «Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅» ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ символов строки.

// ИспользованиС счСтчика ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ. «Π“рязная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°»

ΠœΡ‹ здСсь ΠΎΠ΄Π½ΠΈΠΌ условиСм ΡƒΠ±ΠΈΠ»ΠΈ Π΄Π²ΡƒΡ… Π·Π°ΠΉΡ†Π΅Π². Π’ ΠΏΠ°Ρ€Π΅ Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сохраняСтся всСгда, Π° Ссли ΠΎΠ½ Π΅Ρ‰Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ, Ρ‚ΠΎ выводится счСтчик.

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ «заяц». ВспомнитС, Ρ‡Ρ‚ΠΎ любой Ρ†ΠΈΠΊΠ» Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний шаг. Они ΠΌΠΎΠ³ΡƒΡ‚ Β«Π²ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡΒ» Π² ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ тСкст, Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π½Π΅Ρ‚. Π’ нашСм случаС, ΠΊΠΎΠ³Π΄Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ – послСдний Π² строкС, ΠΌΡ‹ сравниваСм Π΅Π³ΠΎ с символом Β«ΠΊΠΎΠ½Π΅Ρ† строки», Ρ‚.Π΅. Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСсовпадСниС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сработаСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° строка Π·Π°Π΄Π°Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, состоящим ΠΈΠ· массива символов ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ размСрности, придСтся Π² явном Π²ΠΈΠ΄Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ условиС – послСдний символ строки. Π’ классичСском Π‘ΠΈ это выглядит Ρ‚Π°ΠΊ:

if (i!=strlen(in) && in[i]==in[i+1]) k++; // Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π΅ послСдний ΠΈ Π·Π° Π½ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ. ВСхнологичСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строки: пСрСписываниС Π² Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ»ΠΈ сТатиС Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΏ СрСписываниСм Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅. ΠœΡ‹ смоТСм ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Β«Π³Ρ€ΡΠ·Π½ΡƒΡŽΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π΅ процСсс пСрСписывания – массив ΠΈ индСкс Π² Π½Π΅ΠΌ. И Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ счСтчик Π² Π²ΠΈΠ΄Π΅ числа, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСвСсти Π΅Π³ΠΎ Π²ΠΎ внСшнюю Ρ„ΠΎΡ€ΠΌΡƒ прСдставлСния, Π² Π²ΠΈΠ΄Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ символов-Ρ†ΠΈΡ„Ρ€ (см.4.5).

// ИспользованиС счСтчика ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ строки

void F2(char in[], char out[])<

int k1,j1; // Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ k Π² Π²ΠΈΠ΄Π΅ символов-Ρ†ΠΈΡ„Ρ€

for (k1=k; k1!=0;k1=k1/10,j++);

out[j++]=in[i]; // ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ

out[j]=0;> // Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ «ΠΊΠΎΠ½Π΅Ρ† строки»

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

// ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» «ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ» ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ. «Π“рязная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°»

for(k=1;in[i]==in[i+k];k++); // Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ

i=i+k; // Π¨Π°Π³ Ρ†ΠΈΠΊΠ»Π° – Π΄Π»ΠΈΠ½Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ

// ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» «ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ» ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ. «Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ строки»

for(k=1;in[i]==in[i+k];k++); // Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ

j=i+k; // Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ «Ρ…воста»

int k1,j1; // Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ k Π² Π²ΠΈΠ΄Π΅ символов-Ρ†ΠΈΡ„Ρ€

for (k1=k; k1!=0;k1=k1/10,i++);

in[j1]=k%10+’0′; // Π—Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ символы Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ числа

i++; // Β«ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒΒ» ΠΎΠ΄ΠΈΠ½ символ

j1=i; // i – Π½Π°Ρ‡Π°Π»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ шага

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΡ‹ ΠΏΠΈΠ»ΠΈΠΌ сук, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сидим: сдвигаСм содСрТимоС части строки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. Но Β«ΠΏΠΈΠ»ΠΈΡ‚ΡŒΒ» Π½ΡƒΠΆΠ½ΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ, сохраняя свойство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ установили Π² «грязной» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅: Π·Π° ΠΎΠ΄ΠΈΠ½ шаг Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ просматриваСм (ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ) Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ этого шага индСкс i Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ сразу послС сТатого Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° (Π½Π° символС e).

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ матСматичСской ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° нСоТиданная ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ. Π’ матСматичСских Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ матСматичСской ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ ( ММИ). Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: Ссли ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈ i=0, ΠΈ Ссли ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π²Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ i, ΠΌΠΎΠΆΠ½ΠΎ вывСсти, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈ i+1, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅Ρ€Π½ΠΎ всСгда.

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, ΠΌΠ΅Ρ‚ΠΎΠ΄ достаточно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ свойство сохраняСтся Π½Π° всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ), Ссли ΠΎΠ½ΠΎ выполняСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΈ сохраняСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ. Но Π² самом Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ Π΅ΡΡ‚ΡŒ элСмСнт Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΈ частного. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ частных шагов, Π° Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ проводится Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΡ‚ i-Π³ΠΎ шага ΠΊ i+1.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ. Π‘Π°ΠΌΡ‹ΠΌ простым являСтся ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°: Β«Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Ρ†ΠΈΠΊΠ» находится в…». НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слов Π² строкС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ построСна ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Β«ΠΎΠ΄ΠΈΠ½ шаг = ΠΎΠ΄Π½ΠΎ слово». Π’ΠΎΠ³Π΄Π° ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚: Β«Π² Π½Π°Ρ‡Π°Π»Π΅ шага ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° находится Π½Π° Π½Π°Ρ‡Π°Π»Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ слова».

// Пословная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: «1 шаг = 1 слово». «Π“рязная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°»

while (in[i]==’ ‘)i++; // Π”Π›Π― ΠŸΠ•Π Π’ΠžΠ“Πž ШАГА

Π’ соотвСтствии с ММИ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒ утвСрТдСния (ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°) Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС. Для контСкста суммирования это СстСствСнно: сумма ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· 0 элСмСнтов Ρ€Π°Π²Π½Π° 0. Для контСкста поиска максимума максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· 0 элСмСнтов ΠΈΠ»ΠΈ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ «мСньшС мСньшСго». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слСдуСт Π² качСствС максимума Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Π·Π°Ρ‰Π΅Π»ΠΊΡƒΒ» для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шага.

for (s=A[0],i=1;i if (A[i]>s) s=A[i];

for (k=-1,i=0; i // поиск минимального ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…

if (A[i] // пропуск ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…

if (k==-1) k=i; // Β«Π·Π°Ρ‰Π΅Π»ΠΊΠ°Β» Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°ΠœΠ΅Ρ‚ΠΎΠ΄ матСматичСской ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ способ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, всС ΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ шагом ΠΈΠ½Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ‚Π°ΠΊΠΈΡ… областях Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ-логичСской Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΊ установлСниС зависимостСй, Π²Ρ‹Π²ΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΈ Ρ‚.ΠΏ.. Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ состоит Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

Β· для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π²ΠΎΠ΄Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ рассматриваСтся ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… (частых) ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ шагов;

Β· Π½Π° этой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ-логичСски ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ формулируСтся искомая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ;

Β· ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒ установлСнной зависимости доказываСтся (ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, опровСргаСтся) с использованиСм ММИ.

Π‘Π½ΠΎΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ аналогию с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ:

Β· ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° начинаСтся с Π°Π½Π°Π»ΠΈΠ·Π° частного случая Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;

Β· Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ составныС части Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΈΠ· Π½ΠΈΡ… составляСтся Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ цикличСской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

Β· опрСдСляСтся ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°;

Β· провСряСтся, Π²ΠΎ всСх Π»ΠΈ случаях сохраняСтся ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ шага ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ, ΠΏΡ€ΠΈ нСобходимости Π² Ρ†ΠΈΠΊΠ» вводятся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прямоС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΈΠ½Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Π΅Π³ΠΎ построСния:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°?

Π― Ρ‡ΠΈΡ‚Π°ΡŽ «Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ» ΠΎΡ‚ CLRS. Π’ Π³Π»Π°Π²Π΅ 2 Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Β«ΠΏΠ΅Ρ‚Π»Π΅Π²Ρ‹Π΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹Β». Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°?

МнС нравится это ΠΎΡ‡Π΅Π½ΡŒ простоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ( источник )

Π― понимаю, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° являСтся систСматичСским, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для рассуТдСния ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ СдинствСнноС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сосрСдотачиваСмся Π½Π° Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ истинности, ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это цикличСским ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ Π½Π°ΡˆΡƒ Π»ΠΎΠ³ΠΈΠΊΡƒ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½ΠΎ использованиС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° заставляСт нас ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ наши рассуТдСния Π±ΡƒΠ΄ΡƒΡ‚ Π³Π΅Ρ€ΠΌΠ΅Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ.

Π•ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π²Π΅Ρ‰ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди Π½Π΅ ΠΎΡΠΎΠ·Π½Π°ΡŽΡ‚ сразу, имСя Π΄Π΅Π»ΠΎ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΈ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ. Они ΠΏΡƒΡ‚Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° ΠΈ условным Ρ†ΠΈΠΊΠ»ΠΎΠΌ (условиСм, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°).

Как ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ люди, ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ истинным

(хотя это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π»ΠΎΠΆΠ½Ρ‹ΠΌ Π²ΠΎ врСмя Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°). Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, условноС условиС Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π»ΠΎΠΆΠ½Ρ‹ΠΌ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°, ΠΈΠ½Π°Ρ‡Π΅ Ρ†ΠΈΠΊΠ» Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΈ условиС Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ условиями.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° слоТного Ρ†ΠΈΠΊΠ»Π° являСтся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск.

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°.

Алгоритм сортировки вставкой (ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΊΠ½ΠΈΠ³Π΅):

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π² этом случаС: ΠΏΠΎΠ΄-массив [ΠΎΡ‚ 1 Π΄ΠΎ j-1] всСгда сортируСтся.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ это ΠΈ Π΄ΠΎΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½.

инициализация : Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ j = 2. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ΄-массив [1: 1] являСтся массивом для тСстирования. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт, ΠΎΠ½ сортируСтся. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ выполняСтся.

ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ : это ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, провСряя ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ этом случаС это выполняСтся.

ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ : это шаг, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π΄ΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Когда Ρ†ΠΈΠΊΠ» заканчиваСтся, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ j = n + 1. Π‘Π½ΠΎΠ²Π° Ρ†ΠΈΠΊΠ»-ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ выполняСтся. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄-массив [ΠΎΡ‚ 1 Π΄ΠΎ n] Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ отсортирован.

Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с нашим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, наш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ.

Помимо всСх Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², я полагаю, Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π”ΠΆΠ΅Ρ„Ρ„Π° Эдмондса ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Β« Как Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…Β» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ:

ΠŸΠ Π˜ΠœΠ•Π  1.2.1 «Алгоритм Find-Max с двумя ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈΒ»

1) Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ экзСмпляр состоит ΠΈΠ· списка L (1..n) элСмСнтов. Π’Ρ‹Π²ΠΎΠ΄ состоит ΠΈΠ· индСкса i, Ρ‚Π°ΠΊΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ L (i) ΠΈΠΌΠ΅Π΅Ρ‚ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если сущСствуСт нСсколько записСй с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, возвращаСтся любая ΠΈΠ· Π½ΠΈΡ….

2) ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги: Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ двумя ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ. Π’Π°Ρˆ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† Π±Π΅ΠΆΠΈΡ‚ Π²Π½ΠΈΠ· ΠΏΠΎ списку.

3) ΠœΠ΅Ρ€Π° прогрСсса: ΠΌΠ΅Ρ€Π° прогрСсса Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, насколько Π΄Π°Π»Π΅ΠΊΠΎ вдоль списка находится ваш ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ†.

4) Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠ΅Ρ‚Π»ΠΈ: ΠΏΠ΅Ρ‚Π»ΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваш Π»Π΅Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… записСй, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ сталкивался ваш ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ†.

5) ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги: Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† Π²Π½ΠΈΠ· Π½Π° ΠΎΠ΄Π½Ρƒ запись Π² спискС. Если ваш ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† сСйчас ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС, Ρ‡Π΅ΠΌ Π²Ρ…ΠΎΠ΄ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠ°Π»ΡŒΡ†Π°, Ρ‚ΠΎ пСрСмСститС Π»Π΅Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ†, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΠΏΡ€Π°Π²Ρ‹ΠΌ.

6) Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ прогрСсс: Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ успСхи, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ваш ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† пСрСмСщаСтся Π½Π° ΠΎΠ΄Π½Ρƒ запись.

7) ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π’Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° поддСрТиваСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Π½ΠΎΠ²Ρ‹ΠΌ элСмСнтом Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠ°Π»ΡŒΡ†Π° являСтся Макс (старый элСмСнт Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠ°Π»ΡŒΡ†Π°, Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт). По ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ Ρ†ΠΈΠΊΠ»Π° это Max (Max (Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ список), Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт). ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ это Макс (Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список).

8) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΏΠ΅Ρ‚Π»ΠΈ: Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ устанавливаСтС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠ΅Ρ‚Π»ΠΈ, ΡƒΠΊΠ°Π·Π°Π² двумя ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.

9) УсловиС Π²Ρ‹Ρ…ΠΎΠ΄Π°: Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° ваш ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ ΠΎΠ±Ρ…ΠΎΠ΄ списка.

10) ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅: Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. По ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π²Ρ‹Ρ…ΠΎΠ΄Π° ваш ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† встрСтил всС записи. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° ваш Π»Π΅Π²Ρ‹ΠΉ ΠΏΠ°Π»Π΅Ρ† ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° максимум ΠΈΠ· Π½ΠΈΡ…. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ эту запись.

11) Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ врСмя выполнСния: Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ врСмя Π² нСсколько Ρ€Π°Π· ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ списка.

12) ΠžΡΠΎΠ±Ρ‹Π΅ случаи: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° сущСствуСт нСсколько записСй с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° n = 0 ΠΈΠ»ΠΈ n = 1.

14) Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° слСдуСт ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ шагов.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ссли Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ истинными Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Если это ΠΈΠΌΠ΅Π΅Ρ‚ мСсто, вычислСния находятся Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ эффСктивности. Если false, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π» Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ.

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² этом случаС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ истинным Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ мСняСтся

Π—Π΄Π΅ΡΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Β«ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅), Π½Π΅ измСняСт условиС Ρ†ΠΈΠΊΠ»Π°, Ρ‚.Π΅. условиС удовлСтворяСт», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ концСпция ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈΡˆΠ»Π°

Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для цикличСского ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ выполняСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ссли Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС Π΅Π³ΠΎ выполнСния выполняСтся свойство ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±Ρ‹Π» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ, ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ (Π½Π°Ρ‡Π°Π»ΠΎ)

ВСхничСскоС обслуТиваниС (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг послС)

ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ (ΠΊΠΎΠ³Π΄Π° это Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ)

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, свойство ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ наимСньший вСс. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΌΡ‹ Π½Π΅ добавляли Ρ€Π΅Π±Π΅Ρ€, поэтому это свойство ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Π½Π΅ false). На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΌΡ‹ слСдуСм ΠΏΠΎ ΠΊΡ€Π°ΡŽ наимСньшСго вСса (ΠΆΠ°Π΄Π½Ρ‹ΠΉ шаг), поэтому ΠΌΡ‹ снова Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ с наимСньшим вСсом. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ нашли ΠΏΡƒΡ‚ΡŒ с наимСньшим вСсом, поэтому нашС свойство Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Ρ€Π½ΠΎ.

Если Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½.

Π Π°Π±ΠΎΡ‚Π° Π½Π΅ пСрСносится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап слоТными, зависящими ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… способами. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ Ρ†ΠΈΠΊΠ»Ρƒ Π½Π΅ зависит ΠΎΡ‚ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…, Π° ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ слуТит для связывания ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² Π² Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ Ρ†Π΅Π»ΠΎΠ΅. РассуТдСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ваш Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, сводится ΠΊ Ρ€Π°ΡΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° восстанавливаСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ слоТноС ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° Π½Π° малСнькиС простыС шаги, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. УсловиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ заставляСт Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ. Π’Ρ‹ рассматриваСтС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ» достигаСт своСй Ρ†Π΅Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π¦ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, проходя Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ», Π²Ρ‹ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π­Ρ‚ΠΎ часто Π»Π΅Π³ΠΊΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пошаговоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ счСтчика Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ достигнСт фиксированного Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°. Иногда обоснованиС прСкращСния являСтся Π±ΠΎΠ»Π΅Π΅ слоТным.

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ достиТСнии условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° «истина» Ρ†Π΅Π»ΡŒ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Π»Π°ΡΡŒ:

invariant + termination => target
ВрСбуСтся ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для создания простых ΠΈ взаимосвязанных ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ всС достиТСния Ρ†Π΅Π»ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ матСматичСскиС символы для выраТСния ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ слишком слоТным ситуациям, ΠΌΡ‹ полагаСмся Π½Π° ΡΡΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ·Ρƒ ΠΈ Π·Π΄Ρ€Π°Π²Ρ‹ΠΉ смысл.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования, ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π°, которая Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ Ρ†Π΅Π»ΡŒ Ρ†ΠΈΠΊΠ»Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ этой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… областСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ (поиск, сортировка, оптимизация, Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° ΠΈ Ρ‚. Π”.), Π₯арактСризуя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π΅Π³ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•

ΠΠ΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π›ΠΎΠ³ΠΈΠΊΠ° Π€Π»ΠΎΠΉΠ΄Π° – Π₯ΠΎΡ€Π°

< C ∧ я >Π± ΠΎ d Ρƒ < я > < я >ш час я Π» Π΅ ( C ) Π± ΠΎ d Ρƒ < Β¬ C ∧ я > <\ displaystyle <\ frac <\ \; \ mathrm\; \ > <\ \; <\ mathtt > \ (C) \ \ mathrm\; \ <\ lnot C \ land I \>>>> для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Ρ€ΠΎΠΉΠΊΡƒ Π₯ΠΎΠ°Ρ€Π°:

< Икс ≀ 10 >ш час я Π» Π΅ ( Икс 10 ) Икс Π·Π½Π°ΠΊ Ρ€Π°Π²Π½ΠΎ Икс + 1 < Икс Π·Π½Π°ΠΊ Ρ€Π°Π²Π½ΠΎ 10 > <\ displaystyle \ \; <\ mathtt > \ (x для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

< Икс 10 ∧ Икс ≀ 10 >Икс Π·Π½Π°ΠΊ Ρ€Π°Π²Π½ΠΎ Икс + 1 < Икс ≀ 10 > <\ Displaystyle \ <Ρ… для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этой прСдпосылки, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ while ΠΏΠ΅Ρ‚Π΅Π»ΡŒ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

< Икс ≀ 10 >ш час я Π» Π΅ ( Икс 10 ) Икс Π·Π½Π°ΠΊ Ρ€Π°Π²Π½ΠΎ Икс + 1 < Β¬ ( Икс 10 ) ∧ Икс ≀ 10 > <\ Displaystyle \ <Ρ… \ Leq 10 \>\; <\ mathtt > \ (x для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° языков программирования

Π­ΠΉΡ„Π΅Π»Π΅Π²Π°

Π―Π·Ρ‹ΠΊ программирования Whiley Ρ‚Π°ΠΊΠΆΠ΅ обСспСчиваСт ΠΏΠ΅Ρ€Π²ΠΎΠΊΠ»Π°ΡΡΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°. Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… where ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ИспользованиС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ†ΠΈΠΊΠ»Π°

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ:

Для 1. достаточно коммСнтария Π½Π° СстСствСнном языкС (ΠΊΠ°ΠΊ // m equals the maximum value in a[0. i-1] Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅).

Для 3. ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструмСнты для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ матСматичСских Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ основанныС Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π€Π»ΠΎΠΉΠ΄Π° – Π₯ΠΎΠ°Ρ€Π°, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° фактичСски удовлСтворяСт Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ (Π½Π°Π±ΠΎΡ€Ρƒ) ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ (Π°ΠΌ) Ρ†ΠΈΠΊΠ»Π°.

Π’Π΅Ρ…Π½ΠΈΠΊΡƒ абстрактной ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для автоматичСского опрСдСлСния ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Однако этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΎΡ‡Π΅Π½ΡŒ простыми ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ (Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ 0 ).

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΠ΄Π°, ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊ Ρ†ΠΈΠΊΠ»Π°ΠΌ

Π³Π΄Π΅ вычислСния x = y+z ΠΈ x*x ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получится эквивалСнтная, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ быстрая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Напротив, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, свойство 0 являСтся ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° ΠΊΠ°ΠΊ для исходной, Ρ‚Π°ΠΊ ΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°, поэтому Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°Β».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ 35
Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ
(Β§37. Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ)

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

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π•Π²ΠΊΠ»ΠΈΠ΄Π° сущСствуСт условиС ΠΠžΠ”(Π°, b) = ΠΠžΠ”(m, n), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ остаётся справСдливым Π½Π° протяТСнии всСго выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°: ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°, послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Ρ†ΠΈΠΊΠ»Π° ΠΈ послС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΎΠ΅ условиС называСтся ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° (Π°Π½Π³Π». invariant β€” Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΉ).

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° β€” это ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ остаётся справСдливым послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ любого шага Ρ†ΠΈΠΊΠ»Π°.

Π’Ρ‹Π΄Π΅Π»ΠΈΠ² Π² явном Π²ΠΈΠ΄Π΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΌΡ‹ ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ стадии ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΊ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как писал Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΊ АндрСй ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΠΈΡ‡ Π•Ρ€ΡˆΠΎΠ², ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΠΊΠΎΠ² программирования Π² Π‘Π‘Π‘Π , «программиста Π±ΡŒΡŽΡ‚ ΠΏΠΎ Ρ€ΡƒΠΊΠ°ΠΌ, Ссли ΠΎΠ½ посмССт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π°, Π½Π΅ найдя ΠΏΠ΅Ρ€Π΅Π΄ этим Π΅Π³ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Β».

Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π”Π²ΠΎΠ΅ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ: ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π² ряд N + 1 ΠΊΠ°ΠΌΠ½Π΅ΠΉ, сначала N Π±Π΅Π»Ρ‹Ρ…, ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ β€” ΠΎΠ΄ΠΈΠ½ Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ. Π—Π° ΠΎΠ΄ΠΈΠ½ Ρ…ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·ΡΡ‚ΡŒ ΠΎΡ‚ 1 Π΄ΠΎ 3 ΠΊΠ°ΠΌΠ½Π΅ΠΉ. ΠŸΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π±Π΅Ρ€Π΅Ρ‚ Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ («нСсчастливый») камСнь.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для своСго Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° ΠΈΠ³Ρ€ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ своим Ρ…ΠΎΠ΄ΠΎΠΌ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: число ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π±Π΅Π»Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Π½ΠΎ 4. Если ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ½ΠΎΠ΅ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ сопСрника.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. ΠŸΡƒΡΡ‚ΡŒ Π·Π°Π΄Π°Π½ массив А Π΄Π»ΠΈΠ½Ρ‹ n. Найдём ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ суммирования элСмСнтов массива:

Π½Ρ† для i ΠΎΡ‚ 1 Π΄ΠΎ n

Π—Π΄Π΅ΡΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Sum добавляСтся элСмСнт массива A[i], Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ любом i послС окончания ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ шага Ρ†ΠΈΠΊΠ»Π° Π² Sum Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π° сумма всСх элСмСнтов массива с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΎΡ‚ 1 Π΄ΠΎ i. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сразу ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Sum Π±ΡƒΠ΄Π΅Ρ‚ записана сумма всСх элСмСнтов массива.

Аналогично ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ поиска наимСньшСго значСния Π² массивС:

Π½Ρ† для i ΠΎΡ‚ 2 Π΄ΠΎ n

Ссли А[i] ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. Для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ массива Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ сортировки элСмСнтов массива ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°:

Π½Ρ† для i ΠΎΡ‚ 1 Π΄ΠΎ n-1

Ссли A[j] > A[j+l] Ρ‚ΠΎ

с:= А[j); А(j]:= А[j+1]; A[j + 1]:= с;

Π”ΠΎ Π½Π°Ρ‡Π°Π»Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° элСмСнты располоТСны ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС внСшнСго Ρ†ΠΈΠΊΠ»Π° Π½Π° своС мСсто «всплываСт» ΠΎΠ΄ΠΈΠ½ элСмСнт массива. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ этого Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: «ПослС выполнСния i-ro шага Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ i элСмСнтов массива отсортированы ΠΈ установлСны Π½Π° свои мСста».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ построим ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ этом Ρ†ΠΈΠΊΠ»Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Β«Π»Ρ‘Π³ΠΊΠΈΠΉΒ» элСмСнт поднимаСтся Π²Π²Π΅Ρ€Ρ… ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ массива. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Π½Π° i-ΠΌ мСстС Π² отсортированном массивС, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² любой ячСйкС ΠΎΡ‚ А[i] Π΄ΠΎ А[n]. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Π΅Π³ΠΎ Β«Π·ΠΎΠ½Π° нахоТдСния» суТаСтся Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: Β«Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Π½Π° i-ΠΌ мСстС Π² отсортированном массивС, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² любой ячСйкС ΠΎΡ‚ A[i] Π΄ΠΎ А[j]Β». ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ½Ρ†Π΅ этого Ρ†ΠΈΠΊΠ»Π° j = i, элСмСнт A[i] встаёт Π½Π° своё мСсто.

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ опрСдСляли ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4. Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрого возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, основанный Π½Π° использовании ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ возвСдСния Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΈ умноТСния. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹:

(1) a k = a k-l β€’ Π° ΠΏΡ€ΠΈ Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠΉ стСпСни k ΠΈ

(2) Π° ΠΊ = (Π° 2 ) k/2 ΠΏΡ€ΠΈ Ρ‡Ρ‘Ρ‚Π½ΠΎΠΉ стСпСни k.

ПокаТСм, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ возвСдСния числа Π° Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ 7:

для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ пСрвая ΠΈ вторая Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π° n ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π° n = b ΠΊ β€’ Ρ€, Π³Π΄Π΅ Ρ‡Π΅Ρ€Π΅Π· Ρ€ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° Ρ‡Π°ΡΡ‚ΡŒ, взятая Π²Ρ‹ΡˆΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки. Если Π½Π°ΠΌ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ удастся ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ k Π΄ΠΎ нуля, сохранив это равСнство, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π° n = Ρ€, Ρ‚. Π΅. Π·Π°Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π°, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, равСнство Π° n = b ΠΊ β€’ Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого равСнства Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, b = Π°, k = n ΠΈ Ρ€ = 1. Π”Π°Π»Π΅Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (1) ΠΈ (2) (Π² зависимости ΠΎΡ‚ чётности k Π½Π° Π΄Π°Π½Π½ΠΎΠΌ шагС). Π¦ΠΈΠΊΠ» заканчиваСтся, ΠΊΠΎΠ³Π΄Π° k = 0. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

Π½Ρ† ΠΏΠΎΠΊΠ° ΠΊ <> 0

Ссли mod(k,2)=0 Ρ‚ΠΎ

ΠΈΠ½Π°Ρ‡Π΅

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° Π° n = b ΠΊ β€’ Ρ€ выполняСтся Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ†ΠΈΠΊΠ»Π°, послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага, Π° Ρ‚Π°ΠΊΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ написали ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ этого Π±Π»ΠΎΠΊΠ°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ циклаБпСцификация

CΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΡƒΡ€ΠΎΠΊΠ°
для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°. Π€ΠΎΡ‚ΠΎ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π°

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *