Если я хочу получить имя по верху id, я могу использовать эту функцию: VAS(g, "name",id)
, но если я хочу обратный путь, чтобы получить идентификатор по имени, как я могу это сделать?Как получить идентификатор вершины по имени?
ответ
igraph не дает, само по себе, средство для поиска вершин по имени, и по уважительной причине - отображение из названия к ID является более сложной задачей, чем преобразование из ID в имени, которое простая операция поиска массива. Вы можете выполнять итерацию по всем вершинам и останавливаться на совпадении, но это неэффективно для больших графов (O (n) в числе вершин). Более быстрый способ - использовать какую-то структуру данных ассоциативного массива, например dict
в ответе @ Jasc, и использовать имена как ключи и идентификаторы как значения. (Вам нужно будет поддерживать этот индекс синхронно с графиком, если вы его измените.) C сам по себе или стандартная библиотека C не предоставляют такую структуру данных, но доступно много реализаций, например, GHash structure, найденный в бойкий.
+1; это именно то, что я написал бы как один из авторов igraph. Я бы добавил только, что можно заменить обработчик атрибутов по умолчанию для igraph, поэтому OP теоретически расширит механизм обработки атрибутов по умолчанию igraph, чтобы он автоматически поддерживал обратное сопоставление имен с идентификаторами. Но это не реализовано в основной библиотеке. –
Хорошо, большое спасибо за ваши комментарии, я попробую – user1310873
Я нашел следующее на веб-сайте igrah или в списке рассылки.
g = igraph.Graph(0, directed=True)
g.add_vertices(2)
g.vs[0]["name"] = "Bob"
g.vs[1]["name"] = "Bill"
# build a dict for all vertices to lookup ids by name
name2id = dict((v, k) for k, v in enumerate(g.vs["name"]))
# access specific vertices like this:
id_bob = name2id["Bob"]
print(g.vs[id_bob]["name"])
Это похоже на Python, и он выглядит неплохо, но оригинальный плакат отметил вопрос «C» или «C++» – gcbenison
- 1. Получить идентификатор приложения по имени
- 2. Получить идентификатор процесса по имени
- 3. последовательность края по имени вершины
- 4. Получить идентификатор процесса по имени процесса
- 5. Получить идентификатор службы Windows по имени службы
- 6. MySQL получить идентификатор имени
- 7. Как найти идентификатор группы Facebook по имени
- 8. Как golang получить идентификатор процесса по имени процесса?
- 9. Как получить идентификатор пользователя linux по имени пользователя?
- 10. Как получить идентификатор экземпляра виджета по имени в php wordpress?
- 11. Как получить идентификатор структуры/шаблона по имени структуры/шаблона
- 12. Как получить идентификатор тега по его имени через asana api?
- 13. Как получить «идентификатор» элемента по имени с помощью asp.net
- 14. Найдите идентификатор процесса по имени
- 15. Как найти Идентификатор контракта по имени интерфейса?
- 16. Получить идентификатор ресурса от имени
- 17. Как получить идентификатор вершины igraph после добавления вершины с помощью igraph_add_vertices в C++
- 18. Php: Как получить идентификатор от имени
- 19. Как получить идентификатор ресурса указанного имени?
- 20. Как получить идентификатор из имени id div
- 21. Как получить идентификатор процесса из имени процесса?
- 22. Как получить идентификатор имени пользователя Facebook?
- 23. Как получить идентификатор группы при выборе имени
- 24. Получить таблицу по имени, получить свой идентификатор, затем получить другую информацию, используя полученный идентификатор
- 25. Как titan хранит идентификатор вершины (переводит идентификатор вершины в столбец HBase)?
- 26. Получить идентификатор объекта по имени AssetType с использованием REST API
- 27. Получить идентификатор пользователя по имени пользователя в mvc Identity
- 28. Получить идентификатор электронной почты для транзакции по имени
- 29. Получить идентификатор div по имени класса в jquery
- 30. Как получить папки по имени?
Я никогда не использовал 'igraph', но поскольку никто не ответил: после быстрой проверки документации я думаю, что я прав, говоря, что' VAS' ищет атрибут для вершины в граф. Если ваш вопрос заключается в том, как найти идентификатор вершин (или вершин) с определенным значением для указанного атрибута, то я думаю, вы можете выполнять итерацию по всем вершинам в графе, проверять атрибут и накапливать список вершин, которые соответствуют критерий. –