Список смежности для моделирования отношений между относительно расположенными фигурами?

#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. Ого! Почему я об этом не подумал? Псевдокод делает это таким простым. Спасибо!