#model #graph-theory #shapes #adjacency-list
#Модель #теория графов #фигуры #список смежности
Вопрос:
Я пытаюсь смоделировать составной объект, который состоит из одной или нескольких фигур. Для простоты я предположу, что все фигуры являются прямоугольниками. Композит может выглядеть следующим образом (простите за мое плохое оформление в формате ASCII):
--- ------- --- | | 2 | 5 | | ------- --- | 1 | 3 | | | ------- 6 | | | 4 | | --- ------- ---
Википедия указала мне на теорию графов, которую я едва помню по колледжу, и кажется, что список смежности был бы хорошим способом моделировать отношения между всеми этими фигурами.
Мой вопрос в том, могу ли я указать отношения слева, справа, сверху и снизу в списке смежности? Недостаточно сказать, что 1 находится рядом с 2; мне нужно сказать, что 1 находится слева от 2 (а 3 выше 4 и т.д.).
Ответ №1:
Конечно. Где ваш обычный список смежности может выглядеть следующим образом:
vertex {
neighbours: // list of neighbours
}
Чтобы включить относительные положения, каждая вершина могла бы иметь список смежности для каждого направления:
vertex {
left: ...
right: ...
up: ...
down: ...
}
Итак:
3 {
left: [1]
right: [6]
up: [2]
down: [4]
}
и
1 {
left: []
right: [2,3,4]
up: []
down: []
}
Комментарии:
1. Ого! Почему я об этом не подумал? Псевдокод делает это таким простым. Спасибо!