Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика Санек.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
198.01 Кб
Скачать

2.2 Блок-схема

Инициализация массива g

i < n

j < g[i].length

Mt[g[i][j]] = i

Used[i] = true

Mt[g[i][j]] == -1

1

1

Used[i] == true

i < n

tryKuhn(i)

Блок-схема 1 – Алгоритм прохода всего графа

used[v] = true

Mt[to] == -1 || tryKuhn(mt[to])

Mt[to] = v

return true

Mt[to] = v

return true

j < g[i].length

to = g[v][i]

used[v] == true

Блок-схема 2 – алгоритм Куна

3 Программное конструирование

Для реализации данного алгоритма было решено использовать язык Java. Помимо стандартных конструкций языка не было использовано никаких сторонних библиотек.

Более подробное описание функционала программы, пользовательского интерфейса и принципов работы представлено в разделах «Рекомендации пользователю» и «Рекомендации программисту». Исходный код программы представлен в приложении А.

4 Контрольный пример

При запуске программы выпоняется алгоритм Прима для поставленной задачи. Весь ход решения представлен на рисунке 1.

Рисунок 1 – Процесс решения задачи

2

3

1

4

5

Рисунок 2 – Исходный граф

2

3

1

4

5

Рисунок 3 – Конечный граф

5 Рекоменации пользователю

Перед запуском программного средства следует заполнить матрицу весов дуг. Номер строки соответствует началу дуги. Матрица принимает значения вершин в которых заканчивается соответствующая дуга. При заполнении матрицы следует учитывать то, что нумерация индексов массива начинается с 0, так и в матрицу следует вписывать номера вершины меньше на 1. То есть если дуга заканчивается в вершине 1, то вписать следует 0 и так далее.

6 Рекомендации программисту

Программное средство реализовано на языке Java с использованием SDK Eclipse и подключенной JRE 1.7.

Код состоит из 1 класса :

  1. Kuhn – класс, реализующий алгоритм Куна.

Класс Kuhn.

Класс реализует алгоритм Куна. В качестве входящих параметров в конструктор передается двудольный граф.

Видимость

Тип

Идентификатор

Применение / назначение

private

int

n

Число вершин в первой доле

private

int

k

Число вершин во второй доле

private

int

g

Массив, хранящий двудольный граф

private

boolean

Used

Массив хранящий значение об использовании вершин

private

Int

mt

Дополнительная матрица, хранящая информацию о текущем паросочетании

Таблица полей класса Kuhn

Видимость

Тип

Идентификатор

Применение / назначение

Public

boolean

tryKuhn

Метод выполняющий алгоритм Куна

public

void

main

Точка входа программы, вывод результата алгоритма

Таблица методов класса Kuhn