Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Вопрос 21. Графы. Алгоритм поиска достижимых вершин графа.

Назначение и способы реализации на VBA циклов со счетчиком. Синтаксис оператора for.. | Иллюстрация сочетания цикла и ветвления ..методом дихотомии (или методом касательных). | Простейшие методы сортировки: пузырьковая, поиском максимального элемента. |


Читайте также:
  1. II. Аналитический обзор результатов информационного поиска в электронных каталогах трех библиотек.
  2. Matlab-реализация алгоритма
  3. А) алгоритмічна конструкція, де перевіряється умова (значення логічного виразу), і залежно від її істинності чи хибності виконується та чи інша серія команд.
  4. Автоматизация поиска информации. Категория «Ссылки и массивы».
  5. Алгоритм 2.1. Разбор цепочек символов по ДС с действиями
  6. Алгоритм 2.14. Сортировка таблиц, управляемая пользователем
  7. Алгоритм 2.15. Форматирование единиц времени календарной диаграммы

Графы-способ формализовать всевозможные схемы.

Математики считают, что граф состоит из двух связанных между собой множеств. Первое-множество вершин (чаще всего изображается в виде кружочков с цифрами). Вершина: технологическая установка города на атласе автомобильных дорог, станция метрополитена и т.д.

Второе-множество дуг (чаще всего изображается в виде стрелочек).

Дуга: трубы, дороги, туннели.

Графы бывают направленные и ненаправленные. Если граф направленный, дуги обозначаются стрелочками (транспортная схема с односторонним движением).

Один из способов представления графа в памяти компьютера называется матрицей смежности.

Задача: граф задан матрицей смежности; необходимо назвать все вершины графа, в которые можно попасть по стрелочкам (дугам) из заданной вершины.

 

Схематичное описание алгоритма поиска достижимых вершин.

Алгоритм поиска достижимых вершин графа является рекурсивным. Схематично его можно описать как:

 

Шаг 1: найти все вершины непосредственно связанные со стартовой вершиной (идём по стрелочкам);

Шаг 2(рекурсивный): для каждой найденной вершины рекурсивно выполнить алгоритм поиска достижимых вершин, рассматривая уже найденную вершину как стартовую.

 

В процессе работы все найденные вершины нужно объединять вместе.

 

Примитивный алгоритм должен быть снабжён проверками, предотвращающий бесконечную рекурсию.

 

←Бесконечная рекурсия.

 

Sub click()

Dim n As Integer, i As Integer, j As Integer, count As Integer

n=cells(2,1) ‘ n – это количество вершин (ячеек)

ReDim A(n,h) As Integer ‘ двумерный массив А

For i=1 To n:for j=1 To n двойной цикл перебираются строки, столбцы, ячейки

A(i,j)=cells(1+i,2+j)

Next j,i

i=cells(2,2):count=0 ‘ счётчик считает найденные вершины начиная с 0

call spisok(n,i,count,A()) ‘ i – стартовая величина, Call – вызов подпрограммы, А() –матрица смежности.

End Sub

 

Подпрограмма (процедура), вызывает сама себя, (рекурсивная):

 

Sub spisok (n As Integer, i_start As Integer, count As Integer, A() As Integer)

Dim i As Integer, j As Integer, k As Integer ‘ дополнительные переменные

For j=1 to n

If A(i_start,j)=1 then

count=count+1’увеличивает счётчик на единицу

cells(3+count,2)=j ‘ записывает в свободную ячейку

For k=1 To n:A(k,j)=-Abs(A(k,j)):Next k ‘Отвечает за то, чтобы мы не могли попасть в найденную вершину из другой вершины

 

call spisok (n,j,count,A()) ‘ программа вызывает сама себя, i- стартовая величина,не исходная,а которую мы нашли

End If

Next j

End Sub

 

 

for k=1 To n:A(k,j)=-Abs(A(k,j)):Next k

1 соответствует разорванной стрелке => больше в найденную вершину не попадём.

 


Дата добавления: 2015-11-13; просмотров: 40 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Бытовые примеры стека.| Вопрос 15. Процедуры..

mybiblioteka.su - 2015-2024 год. (0.006 сек.)