Π”ΠΈΠΏΠ»ΠΎΠΌ, курсовая, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°
ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚

ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска Ρ†Π΅Π½Ρ‚Ρ€Π° Π³Ρ€Π°Ρ„Π°

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

МаксимальноС расстояниС ΠœΠ’Π’ (i) ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ i Π΄ΠΎ Π»ΡŽΠ±ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π° являСтся элСмСнтом i-ΠΉ строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ DN, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π¦Π΅Π½Ρ‚Ρ€ΠΎΠΌ являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ… Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ срСди всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠœΠ’Π’ (Ρ…), Ρ‚. Π΅. Ρ†Π΅Π½Ρ‚Ρ€ — это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт строка ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ DN, содСрТащая элСмСнт с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Алгоритм Π”Π°Π½Ρ†ΠΈΠ³Π° — этот… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска Ρ†Π΅Π½Ρ‚Ρ€Π° Π³Ρ€Π°Ρ„Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π¦Π΅Π½Ρ‚Ρ€ΠΎΠΌ являСтся любая Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ… Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠœΠ’Π’ (Ρ…) (максимальноС расстояниС Π²Π΅Ρ€ΡˆΠΈΠ½Π°-Π²Π΅Ρ€ΡˆΠΈΠ½Π°), Ρ‚. Π΅. Ρ†Π΅Π½Ρ‚Ρ€ — это любая Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ…, такая, Ρ‡Ρ‚ΠΎ расстояниС ΠΎΡ‚ Π½Π΅Π΅ Π΄ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ минимально.

ΠœΠ’Π’ (Ρ…) =min{ΠœΠ’Π’ (i)}.

Π¦Π΅Π½Ρ‚Ρ€ отыскиваСтся ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ DN, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i, j-Π³ΠΎ элСмСнта ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ — di, j Π΅ΡΡ‚ΡŒ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π΅ расстояниС ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ i ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ j. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вычислСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π€Π»ΠΎΠΉΠ΄Π° ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π”Π°Π½Ρ†ΠΈΠ³Π°.

ОпишСм ΠΈΡ…:

Алгоритм Π€Π»ΠΎΠΉΠ΄Π° являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² поиска ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ Π² Π³Ρ€Π°Ρ„Π΅. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€ΠΈ Π΄ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€Π»ΠΎΠΉΠ΄Π° позволяСт Π½Π°ΠΉΡ‚ΠΈ Π΄Π»ΠΈΠ½Ρ‹ всСх ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ Π² Π³Ρ€Π°Ρ„Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ эта Π·Π°Π΄Π°Ρ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π΄ΠΎ N-Π½ΠΎΠΉ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ Π²ΡΠ΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°), ΠΎΠ΄Π½Π°ΠΊΠΎ рСализация ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° Π±Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚.

Алгоритм Π”Π°Π½Ρ†ΠΈΠ³Π° — этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ отличаСтся ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π€Π»ΠΎΠΉΠ΄Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ выполнСния дСйствий. ΠŸΠ΅Ρ€Π΅Π½ΡƒΠΌΠ΅Ρ€ΡƒΠ΅ΠΌ всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π° ΠΎΡ‚ 1 Π΄ΠΎ n Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· di, jm Π΄Π»ΠΈΠ½Ρƒ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· i Π² j Π³Π΄Π΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ m Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Dm Π΄Π»ΠΈΠ½ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ здСсь Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ m*m.

ВСрнСмся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска Ρ†Π΅Π½Ρ‚Ρ€Π° Π³Ρ€Π°Ρ„Π°:

МаксимальноС расстояниС ΠœΠ’Π’ (i) ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ i Π΄ΠΎ Π»ΡŽΠ±ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π° являСтся элСмСнтом i-ΠΉ строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ DN, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π¦Π΅Π½Ρ‚Ρ€ΠΎΠΌ являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ… Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ срСди всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠœΠ’Π’ (Ρ…), Ρ‚. Π΅. Ρ†Π΅Π½Ρ‚Ρ€ — это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ соотвСтствуСт строка ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ DN, содСрТащая элСмСнт с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Если ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

  • 1. Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ D0 — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, элСмСнтами ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ai, j — Π΄Π»ΠΈΠ½Ρ‹ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… Π΄ΡƒΠ³.
  • 2. Π˜Ρ‰Π΅ΠΌ DN — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π΄Π»ΠΈΠ½ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… расстояний ΠΏΠΎ Π€Π»ΠΎΠΉΠ΄Ρƒ ΠΈΠ»ΠΈ Π”Π°Π½Ρ†Π΅Π³Ρƒ.
  • 3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠœΠ’Π’ (i) для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π°.
  • 4. Из Π²ΡΠ΅Ρ… ΠœΠ’Π’ (i) Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ минимальноС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ.

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

Допустим Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ†Π΅Π½Ρ‚Ρ€ Π³Ρ€Π°Ρ„Π° прСдставлСнного Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅:

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„.

Рис 1. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„

Боставим ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π΄Π»ΠΈΠ½ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… Π΄ΡƒΠ³ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½ — D0, Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли Π΄ΡƒΠ³ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ i ΠΈ j Π½Π΅ сущСствуСт, элСмСнту ai, j ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ?. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° D0:

C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π€Π»ΠΎΠΉΠ΄Π° ΠΈΠ»ΠΈ Π”Π°Π½Ρ†Π΅Π³Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π΄Π»ΠΈΠ½ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ Π΄Π»ΠΈΠ½ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ, Π½Π°ΠΉΠ΄Π΅ΠΌ ΠœΠ’Π’ (i) для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π° ΠœΠ’Π’ (i)=max{di, j}.

ΠœΠ’Π’ (1)=max{d (1, j)}=152.

ΠœΠ’Π’ (2)=max{d (2, j)}=122.

ΠœΠ’Π’ (3)=max{d (3, j)}=145.

ΠœΠ’Π’ (4)=max{d (4, j)}=133.

ΠœΠ’Π’ (5)=max{d (5, j)}=197.

ΠœΠ’Π’ (6)=max{d (6, j)}=197.

ΠœΠ’Π’ (7)=max{d (7, j)}=104.

ΠœΠ’Π’ (8)=max{d (8, j)}=200.

Π¦Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π³Ρ€Π°Ρ„Π° являСтся такая Π²Π΅Ρ€ΡˆΠΈΠ½Π° x, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠœΠ’Π’ (x)=min{ΠœΠ’Π’ (i)}. МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠœΠ’Π’ (7)=104, Π° ΡΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Π° 7 являСтся Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π³Ρ€Π°Ρ„Π°.

ОписаниС исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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

ΠšΡ€ΠΎΠΌΠ΅ созданных ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ классов Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ классы, находящиСся Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…:

java.io.* - ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.

java.util.Scanner — ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ вСсь исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Ρ„Π°ΠΉΠ» GraphCenterFinder.java

public class GraphCenterFinder {.

//ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° имя Ρ„Π°ΠΉΠ»Π°.

//с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ расстояний исходного Π³Ρ€Π°Ρ„Π°.

//Π²Ρ‹Π·ΠΎΠ²: java GraphCenterFinder имя_Ρ„Π°ΠΉΠ»Π°.txt.

public static void main (String[] args) {.

//ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ указания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

switch (args.length) {.

case 0:

System.out.println («ΠžΡˆΠΈΠ±ΠΊΠ°! НС ΡƒΠΊΠ°Π·Π°Π½ΠΎ имя Ρ„Π°ΠΉΠ»Π°.»);

System.exit (-1);

break;

case 1:

break;

default: Π³Ρ€Π°Ρ„ мноТСство Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΊΠΎΠ΄.

System.out.println («ΠΠ΅Π²Π΅Ρ€Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.»);

System.exit (-1);

break;

}.

String fileName = args[0];

Graph graph = new Graph («Graph», fileName);

graph.findGraph ();

graph.getGraph ();

graph.floydAlgorithm ();

graph.CenterFinder ();

}.

}.

Ρ„Π°ΠΉΠ» Graph.java

public class Graph {.

//Имя Ρ„Π°ΠΉΠ»Π°, содСрТащСго Π³Ρ€Π°Ρ„.

private String fileName;

private String name;

private int vertexCount; //ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½ Π² Π³Ρ€Π°Ρ„Π΅.

private int[][] graph; // ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ Π³Ρ€Π°Ρ„ΠΎΠΌ.

private int[][] shortcut; //ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… расстояний.

/*eccentricity — Массив эксцСнтриситСтов.

* Π² ΡΡ‚ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС ΠΎΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π°.

* Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

* Π‘Π°ΠΌΠ° удалСнная Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½Π°, Π½Π΅ΠΎΡ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ расстояниС.

* */.

private int eccentricity[];

/*пСрСмСнная minEccentricity собствСнно ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся искомой.

* Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅ΠΉ радиус Π³Ρ€Π°Ρ„Π°. Π’Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… совпадаСт с Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

  • * ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌΠΈ Π³Ρ€Π°Ρ„Π°.
  • * */

private int minEccentricity;

//ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

Graph (String nameParam, String fileNameParam){.

this.name = nameParam;

this.fileName = fileNameParam;

}.

public void findGraph () {.

char ch;

try (Scanner fileScanner = new Scanner (new File (fileName))) {.

do {.

ch = fileScanner. next ().charAt (0);

if (ch == '#') {.

if (fileScanner.hasNextInt ()) {.

vertexCount = fileScanner. nextInt ();

//Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива ΠΈ Π΅Π³ΠΎ ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅.

graph = new int[vertexCount][vertexCount];

for (int i = 0; i < vertexCount; i++).

for (int j = 0; j < vertexCount; j++).

graph[i][j] = 0;

//Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π³Ρ€Π°Ρ„Π° ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

for (int i = 0; i < vertexCount; i++){.

for (int j = 0; j < vertexCount; j++) {.

if (fileScanner.hasNextInt ()){.

graph[i][j] = fileScanner. nextInt ();

}.

else {.

if ('-' == fileScanner. next ().charAt (0)).

graph[i][j] = Integer. MAX_VALUE/100;//ΠŸΡ€ΠΈΠΌΠ΅ΠΌ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ Π·Π° ΡΠΎΡ‚ΡƒΡŽ долю максимального значСния, Ρ‡Ρ‚ΠΎΠ± Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ слоТСнии ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… чисСл.

}.

}.

}.

}.

}.

} while (fileScanner.hasNext ());

} catch (FileNotFoundException e) {.

System.err.println («ΠžΡˆΠΈΠ±ΠΊΠ°! Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½»);

System.exit (-1);

}.

}.

public void getGraph () {.

System.out.println («Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„:»);

for (int i = 0; i < vertexCount; i++){.

for (int j = 0; j < vertexCount; j++){.

if (graph[i][j] == Integer. MAX_VALUE/100) {.

System.out.print («- «);

}.

else.

System.out.print (graph[i][j] + ««);

}.

System.out.println ();

}.

}.

//Алгоритм Π€Π»ΠΎΠΉΠ΄Π°-Π£ΠΎΡ€ΡˆΠ΅Ρ€Π° для нахоТдСния минимального расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ всСми Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ.

public void floydAlgorithm () {.

shortcut = new int[vertexCount][vertexCount];

for (int i = 0; i < vertexCount; i++).

for (int j = 0; j < vertexCount; j++).

shortcut[i][j] = graph[i][j];

for (int k = 0; k < vertexCount; k++).

for (int i = 0; i < vertexCount; i++).

for (int j = 0; j < vertexCount; j++).

if (shortcut[i][k] ≠ 0 && shortcut[k][j] ≠ 0 && i ≠ j).

if (shortcut[i][k] + shortcut[k][j] < shortcut[i][j] || shortcut[i][j] == 0).

shortcut[i][j] = shortcut[i][k] + shortcut[k][j];

System.out.println («Π’Π°Π±Π»ΠΈΡ†Π° ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… расстояний ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ, найдСнная согласно Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π€Π»ΠΎΠΉΠ΄Π°-Π£ΠΎΡ€ΡˆΠ΅Ρ€Π°»);

for (int i = 0; i < vertexCount; i++){.

for (int j = 0; j < vertexCount; j++).

System.out.print (shortcut[i][j] + ««);

System.out.println ();

}.

}.

//Ѐункция нахоТдСния Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΠΈΡ… расстояний ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½.

public void CenterFinder () {.

int max;

eccentricity = new int[vertexCount];

System.out.println («Π Π°ΡΡΡ‚ояниС ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ (Ρ‹Ρ…) Π²Π΅Ρ€ΡˆΠΈΠ½ (Ρ‹)»);

for (int i = 0; i < vertexCount; i++){.

max = shortcut[i][0];

for (int j = 0; j < vertexCount; j++){.

if (shortcut[i][j] > max) {.

max = shortcut[i][j];

}.

}.

eccentricity[i] = max;

System.out.println («MBB (» + (i+1) + «) = «+ eccentricity[i]);

}.

minEccentricity = eccentricity[0];

for (int i = 0; i < vertexCount; i++){.

if (eccentricity[i] < minEccentricity).

minEccentricity = eccentricity[i];

}.

System.out.println («Π Π°ΡΡΡ‚ояниС ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° Π³Ρ€Π°Ρ„Π° Π΄ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… (ΠΎΠΉ) Π²Π΅Ρ€ΡˆΠΈΠ½ (Ρ‹) — «+ minEccentricity);

/*ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ эксцСнтриситСт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρƒ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π° Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ….

  • * Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Ρ‚Ρ€Π°ΠΌΠΈ Π³Ρ€Π°Ρ„Π°
  • * */

System.out.print («Π¦Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π³Ρ€Π°Ρ„Π° явля (ю)тся Π²Π΅Ρ€ΡˆΠΈΠ½Π° (Ρ‹): «);

for (int i = 0; i < vertexCount; i++){.

if (eccentricity[i] == minEccentricity).

System.out.println ((i+1) + ««);

}.

}.

}.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ заносятся Ρ‡Π΅Ρ€Π΅Π· тСкстовый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈ запускС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π’ ΡΠ°ΠΌΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ:

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Π±ΡƒΠΊΠ²Π°, которая опрСдСляСт, Ρ‡Ρ‚ΠΎ Π·Π° Π½Π΅ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слСдуСт число. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС Π΄ΠΎΠ»ΠΆΠ½ΠΎ находится число, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ количСство Π²Π΅Ρ€ΡˆΠΈΠ½ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅.

Π”Π°Π»Π΅Π΅ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ находится значСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ расстояний ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ количСство строк ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ². Π”ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, Π½Ρƒ, Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ прямого ΠΏΡƒΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· дСфис (-). Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Если ΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π±Ρ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», содСрТащий ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ имя этого Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом Ссли Ρ„Π°ΠΉΠ» ΡƒΠΊΠ°Π·Π°Π½ Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΠΈΠ»ΠΈ Ссли ΠΎΠ½ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сообщит ΠΎΠ± ΡΡ‚ΠΎΠΌ ΠΈ Π²Ρ‹Π΄Π°ΡΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.

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