График с упорядочением [закрыт]

0

Я пытаюсь решить эту проблему в коде c++, я бы хотел иметь неконсервированные решения (как повышение).

Определено это --- неориентированное соединение. Предположим, что имеется график неопределенной размерности с его индексами, хранящийся в контейнере:

 1 - Obj1 
 2 - Obj2
 3 - Obj3
 4 - Obj4
 5 - Obj5
 ...

Теперь предположим, что:

   1 --- 5
   2 --- 3  
   4 --- 2
   ...

Теперь мы решили удалить 3 - Obj 3, я бы хотел:

1 - Obj1
2 - Obj2
3 - Obj4
4 - Obj5
...

а также

1 --- 4  
3 --- 2
...

Я также хотел бы получить доступ к этим объектам по индексам. Я пытаюсь найти решение, но не могу.

Что мне нужно больше делать с этими элементами: сначала добавьте их, со своими свойствами, хранящимися в объектах, то же самое для соединений, без каких-либо затрат. После того, как мне нужно удалить некоторые из них, сохраняя ссылки.

Какая самая простая, наиболее эффективная возможная реализация, любые идеи об использовании STL?

Благодарю!

  • 0
    Так что моя схема это код сейчас!
  • 0
    Это слишком широко, пожалуйста, покажите немного кода, и вы получите помощь для решения проблем в нем.
Показать ещё 3 комментария
Теги:
graph
stl

1 ответ

1

Если вы хотите, чтобы все было просто, просто используйте вектор для ваших вершин. V - тип ваших вершин.

std::vector<V> vertex;
vertex.push(Obj1);
vertex.push(Obj2);
vertex.push(Obj3);
vertex.push(Obj4);
vertex.push(Obj5);

Вы можете удалить вершину, позвонив

vertex.erase(vertex.begin()+2); //delete the third entry

а затем vertex[2] будет Obj4 вместо Obj3.

Ребра графа немного сложнее. Вы можете создать список смежности, который в основном представляет собой двумерный вектор.

std::vector<std::vector<V> > adjacency_list;

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

  • 0
    Хорошо для нумерации, это проблема adjacency_list, у меня действительно много объектов (10000 или больше), мне нужен эффективный способ масштабирования всех ссылок в новом порядке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню