🧠 ΠžΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ программирования ΠΊ производству: ΠΊΠ°ΠΊ алгоритмичСскоС ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π—Π° послСдниС Π³ΠΎΠ΄Ρ‹ я Π½Π΅ Ρ€Π°Π· сталкивался с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π³Π΄Π΅ смСна всСго ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΠΊΠΎΡ€Π½Π΅ мСняла ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ. Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ запросы Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π·Π° миллисСкунды, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ пСрСставали ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Β«Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°Β». ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ находят программисты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ участвовали Π² сорСвнованиях ΠΏΠΎ спортивному ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. И я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡ… ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

Как спортивныС программисты сразу Π΄ΡƒΠΌΠ°ΡŽΡ‚ ΠΎΠ± эффСктивности

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π° «спортивных» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ° сразу Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ сСбС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ вопросы: «Какой Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Ссли записСй станСт ΠΌΠΈΠ»Π»ΠΈΠΎΠ½?Β», Β«Π“Π΄Π΅ здСсь ΡƒΠ·ΠΊΠΎΠ΅ мСсто?Β» ΠΈΠ»ΠΈ Β«Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ?Β». Для Π½ΠΈΡ… это Π½Π΅ просто абстрактныС рассуТдСния, Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ β€” Π² сорСвнованиях каТдая лишняя миллисСкунда ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠΈΡ‚ΡŒ мСста Π½Π° ΠΏΡŒΠ΅Π΄Π΅ΡΡ‚Π°Π»Π΅.

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

Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ структуры Π΄Π°Π½Π½Ρ‹Ρ… ускоряСт прилоТСния

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

Или посмотритС Π½Π° кСш: ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° вытСснСния ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LRU ΠΈΠ»ΠΈ LFU β€” способна ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΎΡ‚Π²Π΅Ρ‚Π° API Π² Ρ€Π°Π·Ρ‹. Π‘Π΅Π· понимания Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π»Π΅Π³ΠΊΠΎ ΡΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ добавляСт хаос Π² систСму. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ структура Π΄Π°Π½Π½Ρ‹Ρ… становится Π·Π°Π»ΠΎΠ³ΠΎΠΌ отзывчивости прилоТСния.

Алгоритмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π’ аналитичСских прилоТСниях пСрСсчСт суммы ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Ссли ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всё с нуля ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½Π΅Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ массив прСфиксных сумм: ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π½Ρ‹Π΅ запросы ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ β€” Π·Π° Π΄ΠΎΠ»ΠΈ сСкунды. Π­Ρ‚ΠΎ простая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, которая экономит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ врСмя, Π½ΠΎ ΠΈ Π½Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’Π° ΠΆΠ΅ идСя экономии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ рСсурсов проявляСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… сфСрах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π–Π°Π΄Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ распрСдСлСниС Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ порядок выполнСния Π·Π°Π΄Π°Ρ‡ сниТаСт срСднСС врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° систСмы ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ. Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ Π² систСмах, Π³Π΄Π΅ Π΄Π°ΠΆΠ΅ миллисСкунды Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ становятся ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ³Ρ€Π°Ρ… ΠΈΠ»ΠΈ высоконагруТСнных сСрвисах.

Или классика β€” ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ. Алгоритм ДСйкстры позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π΄ΠΎ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доставки, Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ сказываСтся Π½Π° Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π΅ ΠΈ Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Когда ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π°ΠΊΠ°Π· быстрСС, ΠΎΠ½, скорСС всСго, останСтся Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΠΈ вСрнСтся снова.

Π˜Π·ΠΌΠ΅Ρ€ΡΠΉ, Π° Π½Π΅ Π³Π°Π΄Π°ΠΉ

Π’ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ часто встрСчаСтся ситуация, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ТалуСтся Π½Π° Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β», Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π‘ΠΏΠΎΡ€Ρ‚ΠΈΠ²Π½Ρ‹Π΅ программисты ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ всё Π΄ΠΎ миллисСкунды. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π΅ Π³Π°Π΄Π°Ρ‚ΡŒ, Π° сразу ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΡƒΠ΄Π° ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ 80% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ быстро это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ страница, которая Π³Ρ€ΡƒΠ·ΠΈΠ»Π°ΡΡŒ 3 сСкунды, Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π° полсСкунды β€” ΠΈ это Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° Π³Π»Π°Π·.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€” ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ, Π° Π½Π΅ Π³Π°Π΄Π°Ρ‚ΡŒ β€” ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΊΠΎΠ΄Ρƒ, Π½ΠΎ ΠΈ ΠΊ инфраструктурС. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, latency-спайки, трСйсинг: всё это инструмСнты для «алгоритмичСского» ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Π΄ΠΎΠ³Π°Π΄ΠΎΠΊ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ β€” это Π½Π΅ просто унивСрситСтская тСория
Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π»Π΅Π³ΠΊΠΎ проходят собСсСдования Π² Ρ‚ΠΎΠΏΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°ΡΡ‚Ρ€Π΅Π²Π°ΡŽΡ‚ Π½Π° простых Π·Π°Π΄Π°Ρ‡Π°Ρ… β€” Π΄Π΅Π»ΠΎ Π² алгоритмичСском ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΈ. Π£ Proglib Academy Π΅ΡΡ‚ΡŒ практичСский курс ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ЯндСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΡƒΡ‡ΠΈΡ‚ Π½Π΅ просто Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΊΠΈ, Π° ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ эффСктивно.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ β€” Ρ‚ΠΎΠΆΠ΅ Ρ‡Π°ΡΡ‚ΡŒ алгоритмичСского ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ «раздСляй ΠΈ властвуй» ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для распараллСливания. НапримСр, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ β€” Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ» Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ядрах, собрал ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π‘Π΅Π· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ алгоритмичСского понимания Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Β«Π½Π΅ Ρ‚ΡƒΠ΄Π°Β» ΠΈ Π±Π΅Π· Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ эффСкта.

ΠœΠΈΠΊΡ€ΠΎΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ с Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ эффСктом

АлгоритмичСскоС ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с большими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΈ с ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вмСсто дСлСния для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ чСтности, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ порядок ΠΎΠ±Ρ…ΠΎΠ΄Π° массивов β€” Ρ‚Π°ΠΊΠΈΠ΅ Β«ΠΌΠ΅Π»ΠΎΡ‡ΠΈΒ» ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ 15–20% прироста скорости, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ большС. И Ρ‡Π΅ΠΌ большС Ρ‚Π°ΠΊΠΈΡ… Β«ΠΌΠ΅Π»ΠΎΡ‡Π΅ΠΉΒ» Π²Ρ‹ собСрСтС, Ρ‚Π΅ΠΌ быстрСС ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

А Π΄Π°ΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ β€” рСпликация, балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π²Ρ‹Π±ΠΎΡ€ консистСнтности β€” Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связаны с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ. КаТдоС принятоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ становится Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΠ°Π·Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈ здСсь снова Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Β«ΠΏΠΎ-алгоритмичСски».

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ совСты для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Мой совСт: всСгда Π½Π°Ρ‡ΠΈΠ½Π°ΠΉΡ‚Π΅ с ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° Π°Π½Π°Π»ΠΈΠ· ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΌ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ с Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΒ» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π˜Π·ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ β€” Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², всС эти усилия окупятся Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

πŸ€– Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π”Π°Ρ‚Π° БайСнтиста
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π”Π°Ρ‚Π° БайСнтиста»

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
19 июля 2017

10 структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ (+Π²ΠΈΠ΄Π΅ΠΎ ΠΈ задания)

Π‘ΠΎ ΠšΠ°Ρ€Π½Ρ – Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ расскаТСт ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅...
admin
21 фСвраля 2017

КакиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ программистом?

Данная ΡΡ‚Π°Ρ‚ΡŒΡ содСрТит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎΒ ΡΠ°ΠΌΡ‹Π΅ распространСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структу...
admin
29 января 2017

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ, Π²Π΅Π±-сайты, ΠΎΠ½Π»Π°ΠΉΠ½-курсы ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π’ этой ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ΅ прСдставлСн список ΠΊΠ½ΠΈΠ³, Π²Π΅Π±-сайтов ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-курсов, Π΄Π°ΡŽΡ‰ΠΈΡ…...