ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ минимального остовного Π΄Π΅Ρ€Π΅Π²Π° Π³Ρ€Π°Ρ„Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠŸΡ€ΠΈΠΌΠ°

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А, Π’) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ порядок Π³Ρ€Π°Ρ„Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов) с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ количСством строк ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ². ΠŸΡ€ΠΈ этом всС ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ» нСдоступны для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈ этом ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ пустыС ячСйки… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ минимального остовного Π΄Π΅Ρ€Π΅Π²Π° Π³Ρ€Π°Ρ„Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠŸΡ€ΠΈΠΌΠ° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка

ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ‚Π΅ΠΌΠ°: ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ минимального остовного Π΄Π΅Ρ€Π΅Π²Π° Π³Ρ€Π°Ρ„Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠŸΡ€ΠΈΠΌΠ°

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΆΠ΅Π»Π΅Π·Π½Ρ‹Ρ… Π΄ΠΎΡ€ΠΎΠ³, Π»ΠΈΠ½ΠΈΠΉ элСктропСрСдачи ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π»ΠΈΠ½ΠΈΠΉ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° построСния сСти с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΎΠ² такая Π·Π°Π΄Π°Ρ‡Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ построСния минимального остовного Π΄Π΅Ρ€Π΅Π²Π° Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π°. Данная Π·Π°Π΄Π°Ρ‡Π° ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Один ΠΈΠ· Π½ΠΈΡ… — Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠŸΡ€ΠΈΠΌΠ°. Π‘ΡƒΡ‚ΡŒ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ ΠΎΡΡ‚ΠΎΠ²Ρƒ минимального, «Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ» Ρ€Π΅Π±Ρ€Π° (Ρ€Π΅Π±Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ»Π°). Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ прСдставлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰Π°ΡΡΡ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠŸΡ€ΠΈΠΌΠ°, которая вычисляСт минимальноС остовноС Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π³Ρ€Π°Ρ„Π°.

1. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠ°Ρ справка

Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ построСния минимального остовного Π΄Π΅Ρ€Π΅Π²Π° восходит ΠΊ Π’ΠΎΠΉΡ‚Π΅Ρ…Ρƒ Π―Ρ€Π½ΠΈΠΊΡƒ (Vojtech Jarnik). Он Π±ΠΎΠ»ΡŒΡˆΠ΅ извСстСн ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° (Robert Prim). Π . ΠŸΡ€ΠΈΠΌ нСзависимо ΠΎΡ‚ Π―Ρ€Π½ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Π΅Π³ΠΎ Π² 1956 ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠ» Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ. Π•Ρ‰Π΅ Ρ€Π°Π· этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π» ЭдсгСр ДСйкстра (Edsger Wybe Dijkstra) Π² 1958 Π³ΠΎΠ΄Ρƒ, Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π·Π° ΠŸΡ€ΠΈΠΌΠΎΠΌ, Ρ‚. ΠΊ. Ρƒ Π”Сйкстры ΡƒΠΆΠ΅ Π±Ρ‹Π» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ с Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ (поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ Π² ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π³Ρ€Π°Ρ„Π΅). Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², построСнных Π½Π° Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π½ΠΈΠΈ Π΄Π΅Ρ€Π΅Π²Π°: сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹), ΠΈ ΠΎΠ½Π° постСпСнно наращиваСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ «Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ‹Ρ…» Ρ€Π΅Π±Π΅Ρ€. ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”ΠΆΠ°Ρ€Π½ΠΈΠΊΠ°-ΠŸΡ€ΠΈΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ O (E+VlogV) ΠΏΡ€ΠΈ использовании Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹Ρ… ΠΊΡƒΡ‡.

2. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ минимального остовного Π΄Π΅Ρ€Π΅Π²Π°

Рассмотрим ΠΎΠ±Ρ‰ΡƒΡŽ схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² построСния минимального остовного Π΄Π΅Ρ€Π΅Π²Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΆΠ°Π΄Π½ΠΎΠΉ стратСгии. Π˜Ρ‚Π°ΠΊ, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°Π½ связный Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ G (V; E) c n Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ ΠΈ Π²Π΅ΡΠΎΠ²Π°Ρ функция w: E > R.

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉ остов строится постСпСнно. Алгоритм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ацикличСский ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ А исходного Π³Ρ€Π°Ρ„Π° G, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ остовным лСсом. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ G состоит ΠΈΠ· n Π²Π΅Ρ€ΡˆΠΈΠ½-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ (n Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹). На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π² A добавляСтся ΠΎΠ΄Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Ρ€Π΅Π±Ρ€ΠΎ. Π“Ρ€Π°Ρ„ A всСгда являСтся ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ минимального остова. ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ добавляСмоС Ρ€Π΅Π±Ρ€ΠΎ e=(u, v) выбираСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ этого свойства: A? {e} Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ΠΎΠΌ минимального. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅Π±Ρ€ΠΎ называСтся бСзопасным.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΠΎΠ±Ρ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ построСния минимального остовного Π΄Π΅Ρ€Π΅Π²Π°:

MST-GENERIC (G, w)

1: A < 0

2: while (ΠΏΠΎΠΊΠ°) A Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся остовом

3: do Π½Π°ΠΉΡ‚ΠΈ бСзопасноС Ρ€Π΅Π±Ρ€ΠΎ (u, v)? E для A

4: A < A? {(u, v)}

5: return A

По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ A, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ минимального остова послС любого числа ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π³Π»Π°Π²Π½Ρ‹ΠΉ вопрос состоит Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°Ρ‚ΡŒ бСзопасноС Ρ€Π΅Π±Ρ€ΠΎ Π½Π° ΡˆΠ°Π³Π΅ 3. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π±Ρ€ΠΎ всСгда сущСствуСт, Ссли A Π΅Ρ‰Π΅ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ остовом (любоС Ρ€Π΅Π±Ρ€ΠΎ остова, Π½Π΅ Π²Ρ…одящСС Π² A). Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ A Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Ρ€Π΅Π±Ρ€ΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ связности (ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Π² ΠΊΠΎΠ½Ρ†Π΅ A — ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ†ΠΈΠΊΠ» выполняСтся (n-1) Ρ€Π°Π·.

Π”Π°Π»Π΅Π΅ приводится ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ отыскания бСзопасных Ρ€Π΅Π±Π΅Ρ€. Для этого Π΄ΠΎΠΊΠ°Π·Π°Π½Π° Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ°, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ бСзопасныС Ρ€Π΅Π±Ρ€Π°. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ Π»Π΅ΠΌΠΌΡƒ:

Π›Π΅ΠΌΠΌΠ°: ΠΏΡƒΡΡ‚ΡŒ Π’ — минимальноС остовноС Π΄Π΅Ρ€Π΅Π²ΠΎ. Π’ΠΎΠ³Π΄Π° любоС Ρ€Π΅Π±Ρ€ΠΎ Π΅ ΠΈΠ· T — бСзопасноС.

Π”ΠΎΠΊ-Π²ΠΎ: Π² Π’ — (n-1) Ρ€Π΅Π±Ρ€ΠΎ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Generic-MST ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎ бСзопасноС Ρ€Π΅Π±Ρ€ΠΎ. ВсСго Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ (n-1) шагов, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всС Ρ€Π΅Π±Ρ€Π° Π² T — бСзопасныС ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ.

Π’Π΅ΠΎΡ€Π΅ΠΌΠ°: ΠŸΡƒΡΡ‚ΡŒ G (V; E) — связный Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ ΠΈ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅ Π• ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° вСсовая функция w. ΠŸΡƒΡΡ‚ΡŒ, А — Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ G, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ минимального остовного Π΄Π΅Ρ€Π΅Π²Π° T. Рассмотрим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ связности К ΠΈΠ· А. Рассмотрим мноТСство E (K) Ρ€Π΅Π±Π΅Ρ€ Π³Ρ€Π°Ρ„Π° G, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»Π΅ΠΆΠΈΡ‚ Π² К. Π’ΠΎΠ³Π΄Π° Ρ€Π΅Π±Ρ€ΠΎ минимального вСса ΠΈΠ· E (K) Π±ΡƒΠ΄Π΅Ρ‚ бСзопасным.

Π”ΠΎΠΊ-Π²ΠΎ: ΠŸΡƒΡΡ‚ΡŒ e=(u, v) — минимальноС ΠΏΠΎ Π²Π΅ΡΡƒ Ρ€Π΅Π±Ρ€ΠΎ ΠΈΠ· E(K). ΠŸΡƒΡΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ остов T Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ e (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π»Π΅ΠΌΠΌΠ΅). Π’.ΠΊ. T связСн, Π² Π½Π΅ΠΌ сущСствуСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ (СдинствСнный) ацикличСский ΠΏΡƒΡ‚ΡŒ p ΠΈΠ· u Π² v, ΠΈ e Π·Π°ΠΌΡ‹ΠΊΠ°Π΅Ρ‚ Π΅Π³ΠΎ Π² Ρ†ΠΈΠΊΠ». ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠ½Ρ†ΠΎΠ² e Π»Π΅ΠΆΠΈΡ‚ Π² K, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π² V K, Π² ΠΏΡƒΡ‚ΠΈ p сущСствуСт хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ Ρ€Π΅Π±Ρ€ΠΎ e'=(x, y), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π΅ΠΌ ΠΆΠ΅ свойством. Π­Ρ‚ΠΎ Ρ€Π΅Π±Ρ€ΠΎ Π½Π΅ Π»Π΅ΠΆΠΈΡ‚ Π² A, Ρ‚. ΠΊ. Π² A ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Ρ€Π΅Π±Π΅Ρ€ ΠΌΠ΅ΠΆΠ΄Ρƒ K ΠΈ V K. Π£Π΄Π°Π»ΠΈΠΌ ΠΈΠ· T Ρ€Π΅Π±Ρ€ΠΎ e' ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ e. Π’Π°ΠΊ ΠΊΠ°ΠΊ w(e') < w(e), ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ остовноС Π΄Π΅Ρ€Π΅Π²ΠΎ T', суммарный вСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мСньшС суммарного вСса T. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, T Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ остовом. ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, T содСрТит e.

Π’ ΡΠ²ΡΠ·ΠΈ с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠΎΠΉ Π²Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. БСзопасным Ρ€Π΅Π±Ρ€ΠΎΠΌ e ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ связности К ΠΈΠ·, А Π½Π°Π·ΠΎΠ²Π΅ΠΌ Ρ€Π΅Π±Ρ€ΠΎ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ вСсом, Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π² К.

3. Алгоритм ΠŸΡ€ΠΈΠΌΠ°

Как ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠšΡ€Π°ΡΠΊΠ°Π»Π°, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠŸΡ€ΠΈΠΌΠ° слСдуСт ΠΎΠ±Ρ‰Π΅ΠΉ схСмС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° построСния минимального остовного Π΄Π΅Ρ€Π΅Π²Π°: Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ ΡΡ‚роящСмуся остову бСзопасноС Ρ€Π΅Π±Ρ€ΠΎ. Алгоритм ΠŸΡ€ΠΈΠΌΠ° относится ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² наращивания минимального остова: Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС сущСствуСт Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ (Π½Π΅ ΡΠΎΡΡ‚оящСй ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ связности, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊ Π½Π΅ΠΉ добавляСтся Ρ€Π΅Π±Ρ€ΠΎ наимСньшСго вСса, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ. По Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π±Ρ€ΠΎ являСтся бСзопасным.

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°Π΄ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС быстро Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ бСзопасноС Ρ€Π΅Π±Ρ€ΠΎ. Для этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ (ΠΊΡƒΡ‡Π΅ΠΉ). Алгоритм ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π³Ρ€Π°Ρ„ G ΠΈ Π΅Π³ΠΎ ΠΊΠΎΡ€Π΅Π½ΡŒ r — Π²Π΅Ρ€ΡˆΠΈΠ½Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ остов. ВсС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ G, Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π²ΡˆΠΈΠ΅ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ, хранятся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ Π©. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v опрСдСляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ key[v], ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π²Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ вСсу Ρ€Π΅Π±Π΅Ρ€, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ… v с Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ минимального остова. ПолС p[v] для Π²Π΅Ρ€ΡˆΠΈΠ½ Π΄Π΅Ρ€Π΅Π²Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Сля, Π° Π΄Π»Ρ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½ΠΎΠ΄Ρƒ Π΄Π΅Ρ€Π΅Π²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΡŽ Π²Π΅Π΄Π΅Ρ‚ Ρ€Π΅Π±Ρ€ΠΎ с Π²Π΅ΡΠΎΠΌ key[v] (ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Ρ€Π΅Π±Π΅Ρ€, Ссли ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ).

Π’ΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠŸΡ€ΠΈΠΌΠ° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

MST-PRIM (G, w, r)

1: Π© < V[G]

2: foreach (для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ) Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ u? Π©

3: do key[u] < ?

4: key[r] < 0

5: p[r] = NIL

6: while (ΠΏΠΎΠΊΠ°) Π©? 0

7: do u < EXTRACT-MIN (Π©)

8: foreach (для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ) Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v? Adj (u)

9: do if v? Π© ΠΈ w (u, v) < key[v] then

10: p[v] < u

11: key[v] < w (u, v)

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ°Ρ… 1−8 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° с ΠΊΠΎΡ€Π½Π΅ΠΌ r.

Рисунок 1 — ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ„Π°Π·Π°. ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ лСс состоит ΠΈΠ· ΠΊΠΎΡ€Π½Ρ ΠΈ ΠΏΡƒΡΡ‚ΠΎΠ³ΠΎ мноТСства Ρ€Π΅Π±Π΅Ρ€

Рисунок 2 — Π Π΅Π±Ρ€ΠΎ с Π²Π΅ΡΠΎΠΌ 6 являСтся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π±Ρ€ΠΎ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΌ ΠΊΠΎΡ€Π΅Π½ΡŒ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ. ДобавляСм Π΅Π³ΠΎ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ остову.

Рисунок 3 — Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ бСзопасноС Ρ€Π΅Π±Ρ€ΠΎ с Π²Π΅ΡΠΎΠΌ 11. ДобавляСм Π΅Π³ΠΎ

Рис. 4

Рисунок 5

Рисунок 6

Рисунок 7

Рисунок 8 — Π Π΅Π±Ρ€Π° с Π²Π΅ΡΠΎΠΌ 17, 19 ΠΈ 25 — Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ‹Π΅. Π˜Ρ… ΠΊΠΎΠ½Ρ†Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ связности. Π Π΅Π±Ρ€ΠΎ с Π²Π΅ΡΠΎΠΌ 21 — бСзопасноС, поэтому добавляСм Π΅Π³ΠΎ. МинимальноС остовноС Π΄Π΅Ρ€Π΅Π²ΠΎ построСно.

ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ Π©. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ ΠΊΡƒΡ‡Ρƒ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… 1−4 ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π° Π²Ρ€Π΅ΠΌΡ O (V). Π”Π°Π»Π΅Π΅ Ρ†ΠΈΠΊΠ» выполняСтся |V| Ρ€Π°Π·, ΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ опСрация EXTRACT-MIN Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя O (VlogV). Π¦ΠΈΠΊΠ» for Π² ΡΡ‚Ρ€ΠΎΠΊΠ°Ρ… 8−11 выполняСтся Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности O (E), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сумма стСпСнСй Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° Ρ€Π°Π²Π½Π° 2|E|. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ принадлСТности Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ 9 ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π° Π²Ρ€Π΅ΠΌΡ O (1), Ссли Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π΅Ρ‰Π΅ ΠΈ ΠΊΠ°ΠΊ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° |V|. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ 11 ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΊΠ»ΡŽΡ‡Π° (DECREASE-KEY), которая для Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ ΠΊΡƒΡ‡ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π·Π° Π²Ρ€Π΅ΠΌΡ O (logV). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всСго ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ O (VlogV+ElogV)=O (ElogV).

Π›ΡƒΡ‡ΡˆΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹ ΠΊΡƒΡ‡ΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹Ρ… ΠΊΡƒΡ‡ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ EXTRACT-MIN Π·Π° ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠ΅ врСмя O (logV), Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ DECREASE-KEY — Π·Π° ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠ΅ врСмя O (1). Π’ ΡΡ‚ΠΎΠΌ случаС суммарноС врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΡ€ΠΈΠΌΠ° составит O (E+VlogV).

4. БоставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ остовной Π΄Π΅Ρ€Π΅Π²ΠΎ Π³Ρ€Π°Ρ„

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А, Π’) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ порядок Π³Ρ€Π°Ρ„Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов) с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ количСством строк ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ². ΠŸΡ€ΠΈ этом всС ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ» нСдоступны для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈ этом ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ пустыС ячСйки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это ΠΊΠ°ΠΊ отсутствиС Ρ€Π΅Π±Ρ€Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ. Когда Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π²Π΅Π΄Π΅Π½Ρ‹, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ», которая послС создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ станСт Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° рассчитаСт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ вСсов для минимального остовного Π΄Π΅Ρ€Π΅Π²Π° ΠΈ Π½Π°Ρ€ΠΈΡΡƒΠ΅Ρ‚ искомый Π³Ρ€Π°Ρ„ (Π΄Π»ΠΈΠ½Ρ‹ Ρ€Π΅Π±Π΅Ρ€ Π³Ρ€Π°Ρ„Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ вСсов). ΠŸΡ€ΠΈ этом Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ», станут нСдоступны для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΡΡ‚Ρƒ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠŸΡ€ΠΈΠΌΠ°.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСт Π½Π΅ΠΊΠΈΠΉ массив a[10] (прСдполагаСтся, Ρ‡Ρ‚ΠΎ число Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10). Π­Ρ‚ΠΎΡ‚ массив инициализируСтся: ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ a[i] [j] присваиваСтся 1000 (прСдполагаСтся, Ρ‡Ρ‚ΠΎ максимальная Π΄Π»ΠΈΠ½Π° Ρ€Π΅Π±Ρ€Π° мСньшС 1000). ΠŸΠΎΡ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ². ΠŸΡ€ΠΈ этом Ссли Π² ΡΡ‡Π΅ΠΉΠΊΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ся Π² ΠΌΠ°ΡΡΠΈΠ² Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ся. Π—Π°Ρ‚Π΅ΠΌ дСлаСтся Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСрываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° всС элСмСнты массива станут снова Ρ€Π°Π²Π½Ρ‹ 1000. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ»? Π‘Π½Π°Ρ‡Π°Π»Π° находится ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива (ΠΈΠ· ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π²Ρ‹ΡˆΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π²Π²ΠΎΠ΄Π°). Он Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ся (пСрСмСнная buf) ΠΈ Π΅ΠΌΡƒ присваиваСтся 1000. Богласно Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠŸΡ€ΠΈΠΌΠ°, Ссли Ρ€Π΅Π±Ρ€ΠΎ подходящСС ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт вычСркиваСтся, Π° Ρ†ΠΈΠΊΠ» начинаСтся с Π½Π°Ρ‡Π°Π»Π°. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰Π΅Π΅ Ρ€Π΅Π±Ρ€ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚? ΠžΡ‚Π²Π΅Ρ‚ Π½Π° ΡΡ‚ΠΎΡ‚ вопрос находится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. БоздаСтся массив Π² n ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Ρ€Π°Π²Π΅Π½ 1 ΠΈΠ»ΠΈ 0. Когда Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ, Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ массива с Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ записываСтся 1 (ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС элСмСнты массива, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π²Π½Ρ‹ 0). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ подходящСС Ρ€Π΅Π±Ρ€ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, находятся Π»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ (Π½ΠΎΠΌΠ΅Ρ€Π° элСмСнтов Ρ€Π°Π²Π½Ρ‹ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ€Π΅Π±Ρ€Π°). Если Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ€Π΅Π±Ρ€Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ€Π΅Π±Ρ€ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ…одящСС. Если это условиС Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся — Ρ€Π΅Π±Ρ€ΠΎ подходящСС. Алгоритм ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Π½ΠΎΠ²Ρ‹ΠΉ Π³Ρ€Π°Ρ„.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ рисования Π³Ρ€Π°Ρ„Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° (krug [10]). Π’Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ расстоянии Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π’Π°ΠΊΠΎΠΉ способ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π±Ρ€Π° Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΡΠ»Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

5. ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ вСсов. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ тСстирования ошибок Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…:

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов

Π’Ρ‹Π΄Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов

Π’Ρ‹Π΄Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов

Π’Ρ‹Π΄Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов

Π’Ρ‹Π΄Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов

Π’Ρ‹Π΄Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 9 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Рисунок 9 — Окно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»Π° написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠŸΡ€ΠΈΠΌΠ°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ вСсов минимального остовного Π΄Π΅Ρ€Π΅Π²Π° Π³Ρ€Π°Ρ„Π°, ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1. http://works.tarefer.ru

2. http://www.intuit.ru

3. http://www.offzone.litehosting.ru

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

// ;

#include

#pragma hdrstop

#include «Unit21.h»

// ;

#pragma package (smart_init)

#include «math.h»

#pragma resource «*.dfm»

TForm1 *Form1;

int n=3;

// ;

__fastcall TForm1: TForm1 (TComponent* Owner)

: TForm (Owner)

{

}

// ;

void __fastcall TForm1: Button1Click (TObject *Sender)

{

n=StrToInt (Edit1->Text);

StringGrid1->ColCount=n;

StringGrid1->RowCount=n;

StringGrid2->ColCount=n;

StringGrid2->RowCount=n;

StringGrid1->Visible=true;

BitBtn1->Enabled=true;

Button1->Enabled=false;

}

// ;

void __fastcall TForm1: BitBtn1Click (TObject *Sender)

{

BitBtn2->Enabled=true;

BitBtn1->Enabled=false;

Button1->Enabled=false;

StringGrid2->Visible=true;

int a[10] [10];

int mas[3] [10];

int kmas=0;

int versh[10];

for (int i=0; i

versh[i]=0;

versh[1]=1;

for (int i=0; i

for (int j=0; j

a[i] [j]=1000;

// *******

for (int i=0; i

for (int j=0; j

if (StringGrid1->Cells[i] [j]≠"") a[i] [j]=StrToInt (StringGrid1->Cells[i] [j]);

// **********

int k=n-1;

while (k≠0)

{

int buf=1000;

int x, y;

for (int i=1; i

for (int j=0; j

{

if ((a[i] [j]

{buf=a[i] [j]; x=i; y=j;}

}

if (versh[x]==1) versh[y]=1; else versh[x]=1;

a[x] [y]=1000;

mas[0] [kmas]=x;

mas[1] [kmas]=y;

mas[2] [kmas]=buf;

kmas++;

// *****

k -;

}

/// ***********************

for (int i=0; i

StringGrid2->Cells [mas[0] [i]] [mas[1] [i]]=IntToStr (mas[2] [i]);

// **********

// рисованиС

int krug[2] [10];

Form1->Canvas->Pen->Color=clBlack;

for (int i=0; i

{

krug[0] [i]=400+100*sin (6.28*i/n);

krug[1] [i]=400+100*cos (6.28*i/n);

}

for (int i=0; i

{

Form1->Canvas->MoveTo (krug[0] [mas[0] [i]], krug[1] [mas[0] [i]]);

Form1->Canvas->LineTo (krug[0] [mas[1] [i]], krug[1] [mas[1] [i]]);

}

}

// ;

void __fastcall TForm1: BitBtn2Click (TObject *Sender)

{

Button1->Enabled=true;

StringGrid1->Visible=false;

StringGrid2->Visible=false;

BitBtn2->Enabled=false;

Form1->Canvas->Pen->Color=clBtnFace;

Form1->Canvas->Rectangle (295, 295,505, 505);

}

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…:

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

— ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10;

— Π΄Π»ΠΈΠ½Π° Ρ€Π΅Π±Ρ€Π° — Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, мСньшС 1000.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

1) ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ количСство Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°

2) НаТимаСтся ΠΊΠ½ΠΎΠΏΠΊΠ° «Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ»

3) Вводятся Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

4) НаТимаСтся ΠΊΠ½ΠΎΠΏΠΊΠ° «Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° составляСт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ вСсов для минимального остовного Π΄Π΅Ρ€Π΅Π²Π° ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ искомый Π³Ρ€Π°Ρ„.

5) Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° вСрнСтся Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ