ь участь. Думаємо k=1.
Основний крок k. Задаємо рядок k и стовпець k як ведучий рядок и ведучий стовпець. Розглядаємо можлівість! Застосування трикутна оператора до всіх елементів dij матриці Dk - 1. Если віконується нерівність dik + dkj lt; dij, (i? k, j? k и i? j), тоді виконуємо следующие Дії :) створюємо матрицю Dk путем заміні в матриці Dk - 1 елемента dij на суму dik + dkj,
б) створюємо матрицю Sk путем заміні в матриці Sk - 1 елемента sij на k. Думаємо k=k + 1 і повторюємо крок k.
После реализации n кроків алгоритму визначення по матриці Dn и Sn найкоротшого шляху между Вузли i и j віконується за Наступний правилами.
. Відстань между Вузли i и j дорівнює елементові dij у матриці Dn.
. Проміжні Вузли шляху від Вузли i до Вузли j візначаємо по матриці Sn. Нехай sij=k, тоді маємо шлях ikj. Если далі sik=k и skj=j, тоді Вважаємо, что весь шлях визначеня, того что знайдені всі проміжні Вузли. У противному випадка повторюємо опис процедур для Шляхів від Вузли i до Вузли k и от Вузли k до Вузли j.
Як и будь-який базовий алгоритм, алгоритм Флойда - Уоршелла вікорістовується очень широко и много де, починаючі від поиска транзитивного замикання графа, закінчуючі генетики и управлінням проектами. Альо перше, что приходити в голову, Звичайно ж транспортні и всякі Інші мережі.
скажемо если ві візьмете карту міста - ее транспортна система це граф, відповідно прісвоївші шкірному ребру Деяк ВАРТІСТЬ, розраховану скажемо з пропускної спроможності и других Важлива параметрів - ві зможете підвесті попутнік по найкоротшому/бістро/дешевому шляху.
3. Програмна реалізація алгоритмів
. 1 Огляд можливіть мови програмування
Середовище виконан (runtime) Було всегда прісутнє в Visual Basic, тому наступна тверджень спочатку Виглядає декілька дивно. Отже, одним з найсерйознішіх нововведень VB.NET являється наявність середовища виконан CLR (Common Language Runtime), загально для усіх мов .NET. Хоча на перший погляд CLR нагадує звічайна бібліотеку годині виконан на кшталт бібліотеки З MSVCRTXX.DLL, бібліотека VB MSVBVMXX.DLL має значний Великі розміри и має набагато більші возможности. З цієї причиною написання програм, ПОВНЕ мірою вікорістовуючіх CLR, более схожий на программирования для API новой операційної система проти, возможности бібліотеки класів .NET Framework настолько шірокі, что вам: практичніше не придется використовуват Функції API.
Оскількі усі мови .NET Використовують Одне и ті ж середовище CLR, необходимость в СЕРЕДОВИЩА виконан для ОКРЕМЕ мов відпадає. Більше того, код, призначеня для виконан в CLR, может буті написань на будь-Якій мові і З Однаково успіхом використовуват в усіх мовах, відповідніх Специфікації CLR. У цьом проявлятися головна відмінність .NET від Java: на платформі .NET можна використовуват будь-яку мову за умови, что ВІН відповідає Специфікації CLR. Програма, написана на Java, працює на будь-Якій платформі (прінаймні теоретично - на практике вінікають проблеми), но за умови, что вона написана самє на Java. Ймовірно, самє мовна інтеграція стані однією Із складових успіху .NET. Зокрема, код VB может використовуват в програмах, написання на С #, и навпаки, причому Це не зажадає Додатковий зусіль з боці програміста.
Наступний принципова нововведення - загальний формат віконуваного кодом .NET, так звань Microsoft Intermediate Language (проміжна мова Microsoft), MSIL або просто IL ВІН є кодом, что частково відкомпілювався, превращается в машинний код СЕРЕДОВИЩА .NET під годину виконан. Перед нами принципова удосконалення схеми, что існувала в усіх версіях VB до Версії 5. Ранее додатка VB компілюваліся в Р-код (псевдокод, машинна мова абстрактної машини), свого роду проміжне представлення залишкового віконуваного коду.
Механізм годині виконан інтерпретував Р-код при запуску програми користувачем. Користувачі Постійно скаржилася на поганов швідкодію и Прохаєв Microsoft Включити в VB підтрімку компіляції в машинний код. Починаючі з Версії 5 з'явилася можлівість Вибори между компактним Р-кодом и машинним (native) кодом, Який Займаюсь более місця, но теоретично швідше працював.
У мовах .NET Преимущества Р-коду об'єдналися з Перевага компільованіх мов. Спочатку програма, написана на будь-Якій мові, компілюється в IL (віддаленій аналог Р-коду), а потім отриманий IL -код превратилась в машинний код. Подібна двокрокова схема відносно легко Забезпечує міжмовну сумісність, а підсумкове использование машинного коду Забезпечує хорошу швідкодію.
Про єктно-орієнтовані засоби VB5 и VB6 були, м яко Кажучи, ограниченной. Зокрема, ЦІ Версії VB собі не дозволяли автоматично ініціалізуваті ...