Алгоритм раскраски графа (точный) — страница 5

  • Просмотров 3905
  • Скачиваний 89
  • Размер файла 133
    Кб

составляют этот подграф A[3] является мнжеством вершин в 3 строке массива A. После того, как были созданы массивы A и B, создается линейный список С, каждый элемент которого содержит множество вершин X, составляющих уникальный наибольший полный подграф графа G. Очевидно, что массив A будет содержать в себе одиаковые множества вершин. Единственным отличием этих множеств друг от друга будет то, что первый элемент каждого такого

множества будет отличен от первого элемента такого же множества, находящегося в массиве A. Например, если в массиве A имеется следующее множество вершин, состовляющее полный подграф: {2,4,5,7}, что означает, что во 2 строке массива А содержится это множество вершин, состоящее из 4 элементов, массив В содержит 4 одинаковых элемента – 4 по адресам 2,4,5,7. Однако это означает, что в 4, 5 и 7 строках массива А будет содержаться то же самое

множество вершин. Во время формирования списка С этот факт учитывается. Список формируется следующим образом: в массиве В ищется максимальный элемент bmax. Это целое число, показывающее размер наибольшего полного подграфа графа G. Затем просматривается массив В. И если соответствующий элемент B[i]по адресу i равен bmax, то создается новый элемент в списке, в него заносится наибольший полный подграф из массива А по адресу i. Проводится

дальнейший просмотр массива В и ищутся другие подграфы, содержащие bmax вершин. Если таковые находятся (а они обязательно находятся) то на этом этапе выполняется проверка, не добавлено ли уже это множество вершин A[i] в список НПП. Проверка осуществляется следующим образом: список С просматривается сначала, и каждое множество вершин, содержащееся в элементе этого списка сравнивается с множеством A[i]. Если обнаруживается, что такое

множество A[i] уже содержится в списке С, то оно пропускается, происходит дальнейшее рассмотрение массива В. В противном случае, если такое множество не было найдено в списке, то создается еще одна ячейка списка С и в нее записывается множество A[i]. Таким образом, после того, как закончится рассмотрение массива В, то есть будут рассмотрены все возможные НПП и уникальные будут добавлены в список С, полученный список С будет содержать

в себе все возможные НПП для данного графа G. 3. Описание программы 3.1 Общие сведения Программа нахождения максимально полного подграфа в произвольном графе реализована на языке Visual C. Программа имеет имя diskretka.exe Программа содержит около 705 строк, исполняемый код программы (файл diskretka.exe) занимает 192 Кбайт оперативной памяти и примерно столько же на диске. Исходный текст программы на языке Visual C (файл diskretka.cpp) занимает 15.8 Кбайт памяти