![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Разработка основных форматов данных
Главным объектом данных в программе является неориентированный граф, подлежащий раскраске. Для задания таких графов в математике обычно используют матрицы и списки. Наиболее просто представить граф матрицей смежности вершин. В такой матрице элемент, расположенный на пересечении строки i и столбца j, равен 1, если вершины i и j связаны ребром, и 0 в противном случае. Матрица смежности вершин обеспечивает высокую скорость выполнения основных операций над графами, но для графов большого размера не эффективна по затратам памяти, т.к. содержит большое число нулей. Однако в нашей задаче обработка таких графов не представляется возможной из-за довольно высокой трудоемкости алгоритма раскраски и сложности изображения графа с большим (более 20-25) числом вершин на форме, поэтому выбор матрицы смежности вполне оправдан. Представление графа в виде списка более эффективно по затратам памяти, но требует большего времени на выполнение типовых операций. Итак, структура данных для представления исходного графа будет иметь следующий общий вид:
где Для представления в программе текущего варианта раскраски графа будем использовать вектор-столбец C, i-ый элемент которого (обозначаемый как Таким образом, структура данных для хранения цветов вершин будет представлена следующим образом:
где Для хранения текущих значений «относительных» локальных степеней вершин графа в процессе раскраски введём вектор-строку L, i-ый элемент которой (обозначаемый через Согласно сказанному, структура данных для хранения локальных степеней вершин будет определяться в виде:
где Так как вектор L переупорядочивается по невозрастанию и соответствие между номерами вершин и его элементами нарушается, необходимо также хранить и вектор номеров вершин после переупорядочения. Этот вектор обозначим через O и определим в виде:
где С целью задания в программе текущих координат вершин в области построения графа PaintBox введем вектор-столбец V следующего формата:
где Для удобства работы пользователя при редактировании графа в программе реализуется отмена и восстановление последнего удаления вершины или ребра. Поддержка этих операций требует введения структур данных для хранения информации о последнем удаленном элементе. Эти структуры должны модифицироваться всякий раз, когда выполняется операция по редактированию графа. Для отмены удаления ребра достаточно сохранять номера его концевых вершин. Для отмены удаления вершины нужно хранить ее порядковый номер и декартовы координаты, а также номера и координаты всех вершин, которые были смежны с ней до удаления. При этом следует учитывать автоматическую перенумерацию вершин после удаления. Также необходимо учитывать изменения векторов C и V и матрицы смежности вершин A. Исходя из сказанного, информацию об отмененном действии можно представить следующей структурой данных:
где
Популярное:
|
Последнее изменение этой страницы: 2016-06-05; Просмотров: 417; Нарушение авторского права страницы