2015-01-23 4 views
3

Я пытаюсь представить способ представления уличной сети в моей программе, просто такой простой: Главная улица A с несколькими перекрестками, скажем a, b, c, d. Другая улица B параллельно с А. Так что-то выглядит следующим образом:Какую структуру данных следует использовать для представления уличной сети?

----|a|---|b|----|c|------------------- 
        Street A 
----|a|---|b|-----------------|d|------ 
    | | | |     | | 
    | | | |     | | 
----|a|---|b|-----------------| |------ 
       Street B 
------------------------------|d|------ 

Я думал, может быть, я мог бы просто создать Street класс для представления двух главных улиц, и каждый из них будет иметь два списка пересечений: левые и правые , Но я могу сказать, что это станет беспорядочным, поскольку я добавляю больше улиц в сеть.

Так что предложение было бы очень признательно! (Может быть несущественными, но я использую Java)

Edit 1: Кроме того, для этого проекта, направления движения позволили очень важно - то есть, структура данных должна быть в состоянии сказать, является ли улица односторонний, так и односторонний, в каком направлении. Я должен иметь возможность легко получить доступ к этой информации из структуры данных.

+3

Ориентированный граф с весами? – Roger

ответ

0

Система улиц может поместиться очень хорошо в GraphDB. Улицы представлены ребрами и пересечениями как узлы. Возможно, что-то вроде Neo4j подойдет вашим потребностям. Есть и другие альтернативы памяти, если вам не нужен что-то такое тяжелое.

+0

Предполагая, что я правильно вас понимаю, если я рассматриваю пересечения как узлы, было бы сложно получить информацию о направлении трафика на этих узлах, если я не должен включать эти данные в класс «Узла». – 0x56794E

+0

@abcXYZ Пересечения не имеют направления движения, улицы делают. Пересечения просто служат вложениями для других улиц. –

+0

Точно, на графике с прямым графиком ребра будут содержать информацию о том, каким образом перемещается трафик. У вас будет преимущество в обоих направлениях на двухсторонней улице, или только на одну улицу. – tgrosinger

1

Создайте класс Street и класс пересечения. Класс пересечения будет функционировать как узел и иметь ссылки на улицы, которые к нему подключены. Это наиболее вероятно самый гибкий дизайн, с которым вы могли бы пойти. Может быть, добавить (x, y) координаты для конечных точек улицы как-хорошо.

Смежные вопросы