Список смежности для моделирования отношений между относительно позиционированными фигурами? - PullRequest
1 голос
/ 25 апреля 2011

Я пытаюсь смоделировать составной объект, который состоит из одной или нескольких фигур.Для простоты я предполагаю, что все фигуры являются прямоугольниками.Совокупность может выглядеть следующим образом (простите мое плохое искусство ASCII):

+---+-------+---+
|   |   2   | 5 |
|   +-------+---+
| 1 |   3   |   |
|   +-------+ 6 |
|   |   4   |   |
+---+-------+---+

Википедия указала мне на теорию графов, которую я едва помню из колледжа, и кажется, что список смежности был бы хорошим способомсмоделировать отношения между всеми этими формами.

Мой вопрос, могу ли я указать отношения слева, справа, сверху и снизу в списке смежности?Недостаточно сказать, что 1 соседствует с 2;Мне нужно сказать, что 1 осталось от 2 (а 3 выше 4 и т. Д.).

1 Ответ

1 голос
/ 25 апреля 2011

Конечно. Где ваш обычный список смежности может выглядеть так:

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: []
}
...