Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для хранСния Π³Ρ€Π°Ρ„ΠΎΠ²: ΠΎΠ±Π·ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈ Π΄Π²Π΅ Β«ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΎΠ²Ρ‹Ρ…Β»

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚.

Π’ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ основныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, примСняСмыС для хранСния Π³Ρ€Π°Ρ„ΠΎΠ² Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ расскаТу ΠΎ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Π΅ Ρ‚Π°ΠΊΠΈΡ… структур, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ мСня ΠΊΠ°ΠΊ-Ρ‚ΠΎ само собой Β«Π²Ρ‹ΠΊΡ€ΠΈΡΡ‚Π°Π»Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈΡΡŒΒ».

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ. Но Π½Π΅ с самого Π½Π°Ρ‡Π°Π»Π° – Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π³Ρ€Π°Ρ„ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ (ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅, Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅, с мноТСствСнными Ρ€Π΅Π±Ρ€Π°ΠΌΠΈ ΠΈ пСтлями ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ…), ΠΌΡ‹ всС ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ.

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ. КакиС ΠΆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ структур Π΄Π°Π½Π½Ρ‹Ρ… для «графохранСния» ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ.

1. ΠœΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…

1.1 ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности прСдставляСт ΠΈΠ· сСбя ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, Π³Π΄Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ строк ΠΈ столбцов ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°, Π° само Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅Π΅ элСмСнта a(i,j) опрСдСляСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ отсутствиСм Ρ€Π΅Π±Π΅Ρ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ i ΠΈ j (ясно-понятно, Ρ‡Ρ‚ΠΎ для Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° такая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ симмСтрична, Π½Ρƒ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС значСния ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ лишь Π²Ρ‹ΡˆΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ). Для Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ² a(i,j) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ количСством Ρ€Π΅Π±Π΅Ρ€ ΠΈΠ· i Π² j (Ссли Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π±Ρ€Π°, Ρ‚ΠΎ a(i,j)= 0), Π° для Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ – вСсом (суммарным вСсом) упомянутых Ρ€Π΅Π±Π΅Ρ€.

1.2 ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° инцидСнтности. Π’ этом случаС наш Π³Ρ€Π°Ρ„ Ρ‚Π°ΠΊΠΆΠ΅ хранится Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ строк ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½, Π° Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ столбцов – ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π±Ρ€Π°. Если Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΈ Ρ€Π΅Π±Ρ€ΠΎ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, Ρ‚ΠΎ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ячСйкС записываСтся Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (для Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ² записываСтся 1 Π² случаС инцидСнтности Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ Ρ€Π΅Π±Ρ€Π°, для ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… – Β«1Β», Ссли Ρ€Π΅Π±Ρ€ΠΎ Β«Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚Β» ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ Β«-1Β», Ссли ΠΎΠ½ΠΎ Π² Π½Π΅Π΅ Β«Π²Ρ…ΠΎΠ΄ΠΈΡ‚Β» (запоминаСтся достаточно Π»Π΅Π³ΠΊΠΎ, вСдь Π·Π½Π°ΠΊ «минус» Ρ‚ΠΎΠΆΠ΅ ΠΊΠ°ΠΊ Π±Ρ‹ Β«Π²Ρ…ΠΎΠ΄ΠΈΡ‚Β» Π² число Β«-1Β»)). Для Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΆΠ΅ Π³Ρ€Π°Ρ„ΠΎΠ² ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ вмСсто 1 ΠΈ -1 ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ суммарный вСс Ρ€Π΅Π±Ρ€Π°.

2. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…

2.1 Бписок смСТности. Ну Ρ‚ΡƒΡ‚, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹, всС просто. КаТдой Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ Π³Ρ€Π°Ρ„Π° ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС, ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² соотвСтствиС Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ структуру (список, Π²Π΅ΠΊΡ‚ΠΎΡ€, массив, …), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½ΠΎΠΌΠ΅Ρ€Π° всСх Π²Π΅Ρ€ΡˆΠΈΠ½, смСТной Π΄Π°Π½Π½ΠΎΠΉ. Для ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ² Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ список лишь Ρ‚Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Β«Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅Β» Ρ€Π΅Π±Ρ€ΠΎ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹-ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°. Для Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ² рСализация Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ слоТной.

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

ΠŸΡ€ΠΎ пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ списки-ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ (ΠΈ с ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡΠΌΠΈ) ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΡƒΡ‚.

2.3 Массив смСТности. НС самая часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π°ΡΡΡ структура. По своСй сути, ΠΎΠ½ прСдставляСт собой Ρ„ΠΎΡ€ΠΌΡƒ Β«ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈΒ» списков смСТности Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ структуру (массив, Π²Π΅ΠΊΡ‚ΠΎΡ€). ΠŸΠ΅Ρ€Π²Ρ‹Π΅ n (ΠΏΠΎ числу Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°) элСмСнтов Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива содСрТат стартовыС индСксы Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΆΠ΅ массива, начиная с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π½Π΅ΠΌ подряд записаны всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, смСТныС Π΄Π°Π½Π½ΠΎΠΉ.

Π’ΠΎΡ‚ здСсь я нашСл самоС понятноС (для сСбя) объяснСниС: ejuo.livejournal.com/4518.html

3. Π’Π΅ΠΊΡ‚ΠΎΡ€ смСТности ΠΈ Ассоциативный массив смСТности

Оно Ρ‚Π°ΠΊ Π²Ρ‹ΡˆΠ»ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ этих строк, Π½Π΅ являясь ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ программистом, ΠΎΠ΄Π½Π°ΠΊΠΎ пСриодичСски имСвший Π΄Π΅Π»ΠΎ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ, Ρ‡Π°Ρ‰Π΅ всСго ΠΈΠΌΠ΅Π» Π΄Π΅Π»ΠΎ со списками Ρ€Π΅Π±Π΅Ρ€. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Π² Π³Ρ€Π°Ρ„Π΅ Π΅ΡΡ‚ΡŒ мноТСствСнныС ΠΏΠ΅Ρ‚Π»ΠΈ ΠΈ Ρ€Π΅Π±Ρ€Π°. И Π²ΠΎΡ‚, Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ классичСских списков Ρ€Π΅Π±Π΅Ρ€, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΈΡ… Β«Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ/ ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΡŽ/ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ/ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈΒ», Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ смСТности ΠΈ ассоциативному массиву смСТности.

3.1 Π’Π΅ΠΊΡ‚ΠΎΡ€ смСТности

Π‘Π»ΡƒΡ‡Π°ΠΉ (Π°1): Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„

Π‘ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ смСТности для нСвзвСшСнного Π³Ρ€Π°Ρ„Π° упорядочСнный Π½Π°Π±ΠΎΡ€ Ρ‡Π΅Ρ‚Π½ΠΎΠ³ΠΎ количСства Ρ†Π΅Π»Ρ‹Ρ… чисСл (Π°[2i], a[2i+1],…, Π³Π΄Π΅ i нумСруСтся c 0), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ каТдая ΠΏΠ°Ρ€Π° чисСл Π°[2i], a[2i+1] Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π΅Π±Ρ€ΠΎ Π³Ρ€Π°Ρ„Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ Π°[2i] ΠΈ a[2i+1] соотвСтствСнно.
Π”Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ записи Π½Π΅ содСрТит свСдСний, являСтся Π»ΠΈ Π³Ρ€Π°Ρ„ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°). ΠŸΡ€ΠΈ использовании Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΡ€Π³Ρ€Π°Ρ„Π° считаСтся, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π±Ρ€ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ· Π°[2i] Π² a[2i+1]. Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅: для Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ², ΠΏΡ€ΠΈ нСобходимости, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ трСбования ΠΊ порядку записи Π²Π΅Ρ€ΡˆΠΈΠ½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ шла Π²Π΅Ρ€ΡˆΠΈΠ½Π° с мСньшим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ присвоСнного Π΅ΠΉ Π½ΠΎΠΌΠ΅Ρ€Π°).

Π’ C++ Π²Π΅ΠΊΡ‚ΠΎΡ€ смСТности цСлСсообразно Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ std::vector, ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π»ΡƒΡ‡Π°ΠΉ (Π°2): Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„, вСса Ρ€Π΅Π±Π΅Ρ€ цСлочислСнныС

По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ со случаСм (Π°1) Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ смСТности для взвСшСнного Π³Ρ€Π°Ρ„Π° с цСлочислСнными вСсами Ρ€Π΅Π±Π΅Ρ€ упорядочСнный Π½Π°Π±ΠΎΡ€ (динамичСский массив) чисСл (Π°[3i], a[3i+1], a[3i+2],…, Π³Π΄Π΅ i нумСруСтся c 0), Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Β«Ρ‚Ρ€ΠΈΠΏΠ»Π΅Ρ‚Β» чисСл Π°[3i], a[3i+1], a[3i+2] Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π΅Π±Ρ€ΠΎ Π³Ρ€Π°Ρ„Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ Π°[3i] ΠΈ a[3i+1] соотвСтствСнно, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ a[3i+2] Π΅ΡΡ‚ΡŒ вСс этого Ρ€Π΅Π±Ρ€Π°. Π’Π°ΠΊΠΎΠΉ Π³Ρ€Π°Ρ„ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ Π½Π΅Ρ‚.

Π‘Π»ΡƒΡ‡Π°ΠΉ (Π±): Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„, вСса Ρ€Π΅Π±Π΅Ρ€ нСцСлочислСнныС

Π’ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ массивС (Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅) нСльзя Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ элСмСнты, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ рСализация. Π“Ρ€Π°Ρ„ хранится Π² ΠΏΠ°Ρ€Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ являСтся Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ смСТности Π³Ρ€Π°Ρ„Π° Π±Π΅Π· указания вСсов, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ содСрТит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ вСса (возмоТная рСализация для C++: std::pair<std::vector, std::vector>). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для Ρ€Π΅Π±Ρ€Π°, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΏΠΎΠ΄ индСксами 2i, 2i+1 ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, вСс Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ элСмСнту ΠΏΠΎΠ΄ индСксом i Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Ну Π° Π·Π°Ρ‡Π΅ΠΌ это Π½Π°Π΄ΠΎ?

Ну, Π°Π²Ρ‚ΠΎΡ€Ρƒ этих строк для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ряда Π·Π°Π΄Π°Ρ‡ это показалось достаточно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. Ну Π° с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ прСимущСства:

  • Π’Π΅ΠΊΡ‚ΠΎΡ€ смСТности, ΠΊΠ°ΠΊ ΠΈ любая другая Β«ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°ΡΒ» структура, достаточно ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС памяти, Ρ‡Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности (для Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ²), ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто рСализуСтся.
  • Π’Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π°, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами. Π’Π΄Ρ€ΡƒΠ³ Π΄Π° понадобится ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Β«ΠΈΠ·Π²Ρ€Π°Ρ‚Β».
  • Π“Ρ€Π°Ρ„Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ мноТСствСнныС Ρ€Π΅Π±Ρ€Π° ΠΈ мноТСствСнныС ΠΏΠ΅Ρ‚Π»ΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСсами (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Π΄Π°ΠΆΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅). Никаких ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚.
  • А Π΅Ρ‰Π΅ Ρ€Π΅Π±Ρ€Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ свойства – Π½ΠΎ ΠΎΠ± этом см. ΠΏ. 4.

Однако, Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, быстрого доступа ΠΊ Ρ€Π΅Π±Ρ€Ρƒ данная «спискота» Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚. И здСсь Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΡΠΏΠ΅ΡˆΠΈΡ‚ Ассоциативный массив смСТности, ΠΎ Ρ‡Π΅ΠΌ – Π½ΠΈΠΆΠ΅.

3.2 Ассоциативный массив смСТности

Π˜Ρ‚Π°ΠΊ, Ссли для нас доступ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ€Π΅Π±Ρ€Ρƒ, Π΅Π³ΠΎ вСсу ΠΈ ΠΈΠ½Ρ‹ΠΌ свойствам являСтся ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ, Π° трСбования ΠΊ памяти Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности, Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ смСТности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π˜Ρ‚Π°ΠΊ, ΠΊΠ»ΡŽΡ‡ΠΎΠΌ являСтся Ρ€Π΅Π±Ρ€ΠΎ Π³Ρ€Π°Ρ„Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ упорядочСнной ΠΏΠ°Ρ€Ρ‹ Ρ†Π΅Π»Ρ‹Ρ… чисСл. На Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это ΠΏΠΎΡ…ΠΎΠΆΠ΅? Π£ΠΆ Π½Π΅ Π½Π° ΠΊΠ»ΡŽΡ‡ Π»ΠΈ Π² ассоциативном массивС? А, Ссли Ρ‚Π°ΠΊ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π°ΠΌ это ΠΈ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ? ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас появится Ρ‚Π°ΠΊΠΎΠΉ ассоциативный массив, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ – упорядочСнной ΠΏΠ°Ρ€Π΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл – Π±ΡƒΠ΄Π΅Ρ‚ поставлСно Π² соотвСтствиС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ρ†Π΅Π»ΠΎΠ΅ ΠΈΠ»ΠΈ вСщСствСнноС число, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ вСс Ρ€Π΅Π±Ρ€Π°. Π’ C++ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ структуру цСлСсообразно Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° std::map (std::map <std::pair < int, int>, int> ΠΈΠ»ΠΈ std::map <std::pair < int, int>, double>), Π»ΠΈΠ±ΠΎ std::multimap, Ссли ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ мноТСствСнныС Ρ€Π΅Π±Ρ€Π°. Ну ΠΈ Π²ΠΎΡ‚, ΠΈ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ структура для хранСния Π³Ρ€Π°Ρ„ΠΎΠ², которая Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС памяти, Π½Π΅ΠΆΠ΅Π»ΠΈ Β«ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅Β» структуры, ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ со мноТСствСнными пСтлями ΠΈ Ρ€Π΅Π±Ρ€Π°ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ТСстких Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π²Π΅Ρ€ΡˆΠΈΠ½ (Π½Π΅ знаю, ΠΊΠΎΠΌΡƒ это Π½Π°Π΄ΠΎ, Π½ΠΎ всС ΠΆΠ΅).

4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Ρ…ΠΎΡ‚ΡŒ «залСйся», Π° Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚

И ΠΏΡ€Π°Π²Π΄Π° ΠΆΠ΅: ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ряда Π·Π°Π΄Π°Ρ‡ Ρƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² присвоСнии Ρ€Π΅Π±Ρ€Π°ΠΌ Π³Ρ€Π°Ρ„Π° ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈ, соотвСтствСнно, Π² ΠΈΡ… Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ. Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ свСсти эти ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΠΊ Ρ†Π΅Π»Ρ‹ΠΌ числам, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Β«Π³Ρ€Π°Ρ„Ρ‹ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ вСрсии Π²Π΅ΠΊΡ‚ΠΎΡ€Π° смСТности ΠΈ ассоциативного массива смСТности.

Π˜Ρ‚Π°ΠΊ, ΠΏΡƒΡΡ‚ΡŒ Ρƒ нас имССтся Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π΅Π±Ρ€Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Π’ этом случаС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ смСТности ΠΊΠ°ΠΊ упорядочСнный Π½Π°Π±ΠΎΡ€ Π½Π΅ Β«ΠΏΠ°Ρ€Β», Π° Β«ΠΊΠ²Π°Ρ€Ρ‚Π΅Ρ‚ΠΎΠ²Β» Ρ†Π΅Π»Ρ‹Ρ… чисСл (Π°[2i], a[2i+1], a[2i+2], a[2i+3]…), Π³Π΄Π΅ a[2i+2] ΠΈ a[2i+3] ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π±Ρ€Π°. Для Π³Ρ€Π°Ρ„Π° ΠΆΠ΅ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ вСсами Ρ€Π΅Π±Π΅Ρ€ порядок, Π² Ρ†Π΅Π»ΠΎΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ (ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ лишь Ρ‚ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ послС вСса Ρ€Π΅Π±Ρ€Π° ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ элСмСнтами a[2i+3] ΠΈ a[2i+4], Π° само Ρ€Π΅Π±Ρ€ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ 4-мя, Π° 5-ю упорядочСнными числами). А для Π³Ρ€Π°Ρ„Π° с нСцСлочислСнными вСсами Ρ€Π΅Π±Π΅Ρ€ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π΅Π³ΠΎ Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

ΠŸΡ€ΠΈ использовании ассоциативного массива смСТности для Π³Ρ€Π°Ρ„ΠΎΠ² с цСлочислСнными вСсами Ρ€Π΅Π±Π΅Ρ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² качСствС значСния Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ число, Π° массив (Π²Π΅ΠΊΡ‚ΠΎΡ€) чисСл, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΡ…, ΠΏΠΎΠΌΠΈΠΌΠΎ вСса Ρ€Π΅Π±Ρ€Π°, всС Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ. ΠŸΡ€ΠΈ этом нСудобством для случая нСцСлочислСнных вСсов Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ задания ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° числом с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (Π΄Π°, это нСудобство, Π½ΠΎ Ссли Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² Π½Π΅ Ρ‚Π°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Ссли Π½Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… слишком Β«Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΌΠΈΒ» double, Ρ‚ΠΎ ΠΎΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ). И Π·Π½Π°Ρ‡ΠΈΡ‚, Π² C++ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ассоциативныС массивы смСТности ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: std::map <std::pair < int, int>, std::vector> ΠΈΠ»ΠΈ std::map <std::pair < int, int>, std::vector, ΠΏΡ€ΠΈ этом ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² Β«Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ-ΠΏΠΎ-ΠΊΠ»ΡŽΡ‡ΡƒΒ» Π±ΡƒΠ΄Π΅Ρ‚ вСс Ρ€Π΅Π±Ρ€Π°, Π° Π΄Π°Π»Π΅Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ числСнныС обозначСния Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ².

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°:

ΠŸΡ€ΠΎ Π³Ρ€Π°Ρ„Ρ‹ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅:

1. ΠšΠΎΡ€ΠΌΠ΅Π½, Вомас Π₯., ЛСйзСрсон, Π§Π°Ρ€Π»ΡŒΠ· И., РивСст, Рональд Π›., Π¨Ρ‚Π°ΠΉΠ½, ΠšΠ»ΠΈΡ„Ρ„ΠΎΡ€Π΄. Алгоритмы: построСниС ΠΈ Π°Π½Π°Π»ΠΈΠ·, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅: ΠŸΠ΅Ρ€. с Π°Π½Π³Π». – М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2011.
2. Π₯Π°Ρ€Π°Ρ€ΠΈ Ѐрэнк. ВСория Π³Ρ€Π°Ρ„ΠΎΠ². М.: ΠœΠΈΡ€, 1973.
Π”ΠΎΠΊΠ»Π°Π΄ Π°Π²Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎ эти самыС Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ ассоциативный массив смСТности:
3. Π§Π΅Ρ€Π½ΠΎΡƒΡ…ΠΎΠ² Π‘.А. Π’Π΅ΠΊΡ‚ΠΎΡ€ смСТности ΠΈ ассоциативный массив смСТности ΠΊΠ°ΠΊ способы прСдставлСния ΠΈ хранСния Π³Ρ€Π°Ρ„ΠΎΠ² / S.A. Chernouhov. Adjacency vector and adjacency map as data structures to represent a graph // Π‘Π±ΠΎΡ€Π½ΠΈΠΊ статСй ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ Π½Π°ΡƒΡ‡Π½ΠΎ-практичСской ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Β«ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ внСдрСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ ΠΏΡƒΡ‚ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΒ» (Π‘Π°Ρ€Π°Ρ‚ΠΎΠ², 14.09.2019 Π³.). – Π‘Ρ‚Π΅Ρ€Π»ΠΈΡ‚Π°ΠΌΠ°ΠΊ: АМИ, 2019, с. 65-69
ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-источники ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:
4. prog-cpp.ru/data-graph
5. ejuo.livejournal.com/4518.html

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com