Побудова дерева обходу в глибину в середовищі програмування delphi

Delphi-програма реалізує один з найвідоміших алгоритмів обходу графа, а саме пошук в глибину. Основна суть даного алгоритму полягає в наступному: рухатися вглиб, поки це можливо (є не пройдені ребра), і повертатися і шукати інший шлях, коли таких ребер немає. Відмітимо, що така процедура виконується до тих пір, поки всі вершини, досяжні з вихідної не будуть переглянутими. Якщо після цього залишаються не переглянуті вершини, вибирають одну з них і для неї процес обходу графа в глибину повторюється.

Головна форма розглядуваного delphi-проекту ділиться на дві частини і складається з панелі інструментів  та графічного редактора. Розглянемо призначення кожної з них більш детально.

Читати повністю

Знаходження найкоротшого шляху між двома вершинами в орієнтованому графі використовуючи алгоритм Дейкстри

Delphi-проект розроблено за проханням користувача на ім'я andrey_khorolskiy («...Бажано передбачити можливість пошуку найкоротшого маршруту не тільки між початковою та кінцевою вершинами, але і між початковою і проміжною без пошуку маршруту до кінцевої...») і реалізує процес знаходження найкоротшого шляху між двома вершинами в орієнтованому графі, використовуючи для цього алгоритм Дейкстри.

Виходячи з того, що інтерфейс головної форми розглядуваного delphi-проекту аналогічний проектам, які реалізують інші алгоритми на графах, лише з однією відмінністю (панель інструментів міститься додаткове поле типу TEdit, в яке, способом введення з клавіатури, необхідно вказати номер вершини, для якої будується маршрут), то основні її елементи та процес побудови орієнтованого графа розглядати не будемо. Це все детально можна почитати перейшовши, наприклад, за посиланням Знаходження найкоротшого шляху від однієї вершини графа до всіх інших вершин в середовищі програмування delphi. А перейдемо до практики, тобто провіримо його роботу на конкретному прикладі.

Для цього, розглянемо деякий орієнтований граф, і припустимо, що для нього необхідно знайти мінімальний маршрут від вершини номер один, до вершини номер три.

Читати повністю

Рішення задачі комівояжера методом найближчого сусіда в середовищі програмування delphi

Проект призначений для відшукання розв'язку задачі комівояжера (являється однією з найвідоміших задач комбінаторної оптимізації) яка полягає в знаходженні самого вигідного маршруту, що проходить через зазначені населені пункти хоча б по одному разу з наступним поверненням в початковий пункт і використовуює для цього один з найпростіших наближених методів, а саме методо найближчого сусіда.

Основна суть даного методу полягає в тому, що побудова оптимального маршруту, починається з довільного населеного пункту, і, на кожному кроці, доповнюється новим, який, в свою чергу, повинен бути найближчим до останнього відвіданого пункту, та ще не включеним в маршрут. В кінці роботи алгоритму, маршрут замикається в цикл, який і приймається за наближене рішення. Відмітимо, що  попри свою простоту, алгоритм методу найближчого сусіда, як і інші «жадібні» алгоритми, в деяких випадках, може видавати неоптимальні рішення. Яким чином це відбувається можна ознайомитись перейшрвши за посиланням Рішення задачі комівояжера методом найближчого сусіда.

Після того, як зміст методу що реалізується відомий, зупинемося більш детально на основних моментах роботи delphi-програми. Отже, після запуску проекту, на екрані появиться форма наступного вигляду:

Читати повністю

Побудова мінімального кістятка за алгоритмом Борувки в середовищі програмування delphi

Програма реалізує процес побудови дерева мінімальної вартості в неорієнтованому графі і використовує для цього алгоритм Борувки. Відмітимо, що детально розглядати теоретичну частину даного алгоритму не будемо, її можна знайти за посиланням побудова мінімального кістятка за алгоритмом Борувки, а перейдемо до розгляду основних елементів головної форми delphi-проекту.

Отже, головна форма складається з панелі інструментів, області графічного представлення, області, яка містить матрицю суміжності графа та області виводу результатів. Розглянемо кожну з них більш детально.

Читати повністю

Програмна реалізація методу штучного базису в середовищі delphi

Delphi-програма реалізує процедуру відшукання розв'язку задачі лінійного програмування і використовує для цього метод штучного базису. Відмітимо, що данйи метод викорисовується в тому випадку, коли модель задачі не містить достатньої кількості або немає взагалі базисних (одиничних) векторів. Основна ідея методу штучного базису полягає в тому, що шляхом введення до відповідних обмежень моделі задачі штучних змінних створюються штучні вектори, які утворюють базис необхідний для ров'язку задачі. По мірі ров'язання ці вектори виводяться із базису і розв'язок задачі продовжуємо стандартним симплекс методом.

Далі, перейдемо до детального розгляу кожного з елементів головної форми проекту. Отже, головне вікно програми ділиться на три частини:

Читати повністю

Розв'язок задачі лінійного програмування двоїстим симплекс методом в середовищі програмування delphi

Програма призначена для знаходження розв'язку задачі лінійного програмування, при якому значення цільової функції досягає свого максимуму і використовує для цього двоїстий симплекс методу.  Відмітимо, що основна відмінність даного методу від симплекс методу полягає в тому, що при використанні останнього — значення стовпця вільних членів задачі, повинні задовільняти умові додатності. Тоді, як двоїстий симплекс метод використовується в тому випадку, коли серед вільних членів системи обмежень існують такі, що приймають від'ємні значення.

Далі, перейдемо до детального розгляу кожного з елементів головної форми проекту, після чого, з його допомогою, знайдемо розв'язок конкретної задачі лінійного програмування. Отже, головне вікно програми ділиться на три частини:

Читати повністю

Знаходження розв'язку задачі лінійного програмування в середовищі програмування delphi

Програма призначена для знаходження розв'язку задачі лінійного програмування, при якому значення цільової функції досягає свого максимуму і в якості алгоритму для цього, використовує ітераційний процес симплекс методу. Детально розглядати загальну інформацію про лінійне програмування та опис алгоритмів рішення задач такого типу, зокрема і симплекс методом тут не будемо. Для цього, на сайті існує спеціальний розділ під назвою Дослідження операцій, де крім теоретичної частини Ви зможете знайти докладні приклади вирішення конкретних завдань. Тобто перейдемо до безпосереднього розгляду delphi-проекту.

Головне вікно програми ділиться на три частини:

  1. Панель існтрументів: містить два компоненти типу TSpinEdit (відповідають за розмірність симплекс таблиці) та дві кнопки типу TButton ("Знайти оптимальний план задачі лінійного програмування" та "Очитстити"). Перша з них, реалізує процедуру побудови оптиамльного розв'язку задачі лінійного програмування за симплекс методом і друга — готує проек до нового прикладу.
  2. Робоча область: містить таблицю типу TStringGrid, у комірки якої, способом введення з клавіатури, заносяться дані початкової симплекс таблиці.
  3. Область виводу рузультатів: містить компонент TPageControl, який, по ходу виконання програми доповнюється сторінками TTableSheet та таблицями TStringGrid, кожна з яких містять опорний план, отриманий на кожній ітерації алгоритму (оптимальний план заданої задачі міститься в останній таблиці).

Читати повністю

« Попередня сторінкаНаступна сторінка »