Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 109

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вычислСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ приблиТСниями. ΠœΡ‹ продвигаСмся Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ массиву ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π°Ρ€Π΅Π·ΠΊΠ°ΠΌΠΈ: [lower, lower], [lower, lower+1], [lower, lower+2] ΠΈ Ρ‚Π°ΠΊ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ приблиТСния [lower, upper].

Бвойство ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС прохоТдСния Ρ†ΠΈΠΊΠ»Π° Result прСдставляСт максимум Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π½Π°Ρ€Π΅Π·ΠΊΠΈ массива. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΡΡ‚ΡŒ этого свойства нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π°. КаТдая итСрация ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Ρ€Π΅Π·ΠΊΡƒ, сохраняя ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Π¦ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° очСрСдная Π½Π°Ρ€Π΅Π·ΠΊΠ° массива совпадаСт со всСм массивом. Π’ этом состоянии ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Result являСтся максимумом массива, Ρ‡Ρ‚ΠΎ ΠΈ являСтся Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Рис. 11.7.  ΠΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡ массива ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π°Ρ€Π΅Π·ΠΊΠ°ΠΌΠΈ

Π˜Π½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° коррСктности Ρ†ΠΈΠΊΠ»Π°

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вычислСния максимума массива ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ схСму цикличСских вычислСний, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡƒΡŽ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ситуациям. Π’Ρ‹ опрСдСляСтС, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ являСтся элСмСнт, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ n-ΠΌΠ΅Ρ€Π½ΠΎΠΉ повСрхности POST. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях POST ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт - Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π¦ΠΈΠΊΠ»Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ прямого способа Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ "ΠΎΠ΄Π½ΠΈΠΌ выстрСлом". Но Ρƒ вас Π΅ΡΡ‚ΡŒ нСпрямая стратСгия, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΡ†Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² m-ΠΌΠ΅Ρ€Π½ΡƒΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ INV, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽ POST (для m>n). Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ попадания всС врСмя содСрТит POST. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ Π·Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ приблиТаСмся ΠΊ POST, сохраняя ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ INV. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ рисунок ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот процСсс:

Рис. 11.8.  Π’ычислСниС Ρ†ΠΈΠΊΠ»Π° (ΠΈΠ· [М 1990])

ВычислСниС Ρ†ΠΈΠΊΠ»Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹:

[x]. ЦСль post, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΊΠ°ΠΊ свойство, выполняСмоС Π² любом допустимом Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ состоянии. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "Result являСтся максимумом массива". На рисункС Ρ†Π΅Π»ΡŒ post прСдставлСна мноТСством состояний POST.

[x]. Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° inv, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Ρ†Π΅Π»ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»ΡŒ - это частный случай ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "Result являСтся максимумом Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π½Π°Ρ€Π΅Π·ΠΊΠΈ массива". Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° поиска Ρ†Π΅Π»ΠΈ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° рисункС: "КаТдая Ρ‚ΠΎΡ‡ΠΊΠ° Π»Π΅ΠΆΠΈΡ‚ Π½Π° повСрхности, содСрТащСй POST.

[x]. Π’ΠΎΡ‡ΠΊΡƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ init, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ извСстно, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π² INV, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

[x]. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ body, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π΅ΡΡ Π² INV, Π½ΠΎ Π½Π΅ Π² POST, Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΡƒΡŽ ΠΊ POST, Π½ΠΎ всС Π΅Ρ‰Π΅ ΠΎΡΡ‚Π°ΡŽΡ‰ΡƒΡŽΡΡ Π² INV. Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ maxarray являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прСобразования.

[x]. ВСрхняя Π³Ρ€Π°Π½ΠΈΡ†Π° числа ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ body, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ· INV Π² POST. Как Π±ΡƒΠ΄Π΅Ρ‚ пояснСно Π½ΠΈΠΆΠ΅, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для опрСдСлСния Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ приблиТСния ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… инструмСнтов числСнного Π°Π½Π°Π»ΠΈΠ·Π°. Но Ρ‚Π°ΠΌ эта идСя понимаСтся ΡˆΠΈΡ€Π΅. ВаТная Ρ€Π°Π·Π½ΠΈΡ†Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² чистой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ бСсконСчныС вычислСния, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π», Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ Π½Π΅ достигаСтся ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 1/n ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π» 0, хотя срСди Ρ‡Π»Π΅Π½ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅Ρ‚ числа 0. Π’ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… вычислСниях ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° нашСм экранС Π΅Ρ‰Π΅ ΠΏΡ€ΠΈ нашСй ΠΆΠΈΠ·Π½ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ настаиваСм, всС Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ своСй Ρ†Π΅Π»ΠΈ послС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ числа ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ числСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ сходимости. Π”Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° матСматичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сходится Π½Π° бСсконСчности, ΠΌΡ‹ ΠΎΠ±Ρ€Ρ‹Π²Π°Π΅ΠΌ процСсс сходимости, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ с Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ способ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ цикличСского процСсса состоит Π² связывании с ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ процСссом цСлочислСнной Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ - Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ†ΠΈΠΊΠ»Π°, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

[x]. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ всСгда Π½Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π΅Π½.

[x]. Π›ΡŽΠ±ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π’Π°ΠΊ ΠΊΠ°ΠΊ цСлочислСнная Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ бСсконСчно, Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° позволяСт Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ являСтся Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ body, приводящим Ρ‚ΠΎΡ‡ΠΊΡƒ Π² POST. Π’ Π·Π°Π΄Π°Ρ‡Π΅ нахоТдСния максимума Π½Π°ΠΉΡ‚ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ просто: t.upper - i. Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ удовлСтворяСт ΠΎΠ±ΠΎΠΈΠΌ условиям:

[x]. ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ t.capacity; Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ нСпустым массивам. Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ класса ARRAY Π·Π°Π΄Π°Π΅Ρ‚: capacity = upper - lower + 1. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ свойство i <= t.upper Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ i Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ t.lower.

[x]. Π›ΡŽΠ±ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° выполняСт ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ i := i + 1, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» являСтся простым ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅, извСстный Π² языках программирования, ΠΊΠ°ΠΊ "Ρ†ΠΈΠΊΠ» For" ΠΈΠ»ΠΈ "Ρ†ΠΈΠΊΠ» DO", Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Для Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² число Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ просто, выявлСниС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ становится слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, СдинствСнным ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом являСтся Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

Нам понадобится Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ понятиС, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π΅Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π½Π°Π±Ρ€ΠΎΡΠ°Π½Π½ΡƒΡŽ схСму Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ тСкст, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ». ΠœΡ‹ нуТдаСмся Π² простом способС опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ тСкущая итСрация достигла Ρ†Π΅Π»ΠΈ (постусловия) post. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ итСрация конструируСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ INV, Π° POST являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ INV, Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ условиС exit Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ элСмСнт ΠΈΠ· INV ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ POST Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° выполняСтся exit. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, постусловиС post ΠΈ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ inv связаны ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ:


post = inv and exit



Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ», - Ρ‡ΡŒΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ состояния ΠΏΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ inv, - ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ выполнится exit. Π’ этом состоянии, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈ post.

Бинтаксис Ρ†ΠΈΠΊΠ»Π°

Бинтаксис Ρ†ΠΈΠΊΠ»Π° нСпосрСдствСнно слСдуСт ΠΈΠ· ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сообраТСний, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π°. Он Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ элСмСнты, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅.

[x]. Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ†ΠΈΠΊΠ»Π° inv - ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.

[x]. УсловиС Π²Ρ‹Ρ…ΠΎΠ΄Π° exit, Ρ‡ΡŒΡ ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΡ с inv Π΄Π°Π΅Ρ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ Ρ†Π΅Π»ΡŒ.

[x]. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ var - цСлочислСнноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

[x]. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ инструкций ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда приводят ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ inv выполняСтся, Π° var становится Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

[x]. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ инструкций body, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ начинаСтся Π² состоянии, Π³Π΄Π΅ var Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ выполняСтся inv), сохраняСт ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ var, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя слСдя Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π½Π΅ стало мСньшС нуля.

[x]. Бинтаксис Ρ†ΠΈΠΊΠ»Π° чСстно ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ эти ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹:


from

init

invariant

inv

variant

var

until

exit

loop

body

end



ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ invariant ΠΈ variant ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ from ΠΏΠΎ синтаксису трСбуСтся, Π½ΠΎ инструкция init ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустой.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ выполнСния Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ: Π²Π½Π°Ρ‡Π°Π»Π΅ выполняСтся init, Π·Π°Ρ‚Π΅ΠΌ 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π· выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСстаСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ exit ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false.

Π’ языках Pasal, C ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ» называСтся "Ρ†ΠΈΠΊΠ»ΠΎΠΌ while", Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° Ρ‚ΠΈΠΏΠ° "repeat ... until", Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° выполняСтся, ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ тСст являСтся условиСм Π²Ρ‹Ρ…ΠΎΠ΄Π°, Π° Π½Π΅ условиСм продолТСния, ΠΈ синтаксис Ρ†ΠΈΠΊΠ»Π° явно содСрТит Ρ„Π°Π·Ρƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ эквивалСнт записи нашСго Ρ†ΠΈΠΊΠ»Π° Π½Π° языкС Pascal выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


init;

while not exit do body



Π‘ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΈ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Ρ†ΠΈΠΊΠ» для maxarray выглядит Ρ‚Π°ΠΊ: