Я проектирую график в C++, используя хеш-таблицу для своих элементов. Хэш-таблица использует открытую адресацию, а график имеет не более 50 000 ребер. Я также разработал алгоритм PRIM, чтобы найти минимальное связующее дерево графика. Мой PRIM алгоритм создает хранилище для следующих данных:Какова наиболее эффективная структура данных для разработки алгоритма PRIM?
таблица с именем
Q
поместить туда все узлы в самом начале. В каждом цикле узел посещается и в конце цикла он удаляется из Q.Таблица с именем
Key
, по одному для каждого узла. При необходимости ключ изменяется (по крайней мере, один раз за цикл).Таблица с именем
Parent
, по одному для каждого узла. В каждом цикле в эту таблицу вставляется новый элемент.Таблица с именем
A
. Программа хранит здесь конечные края минимального остовного дерева. Это таблица, которая возвращается.
Что было бы наиболее эффективной структурой данных, используемой для создания этих таблиц, если граф имеет 50 000 ребер?
Могу ли я использовать массивы?
Я боюсь, что элементов для каждого массива будет слишком много. Разумеется, я даже не рассматриваю использование связанных списков, потому что доступ к каждому элементу займет много времени. Могу ли я использовать хеш-таблицы?
Но опять-таки, элементы - путь многим. Мой алгоритм хорошо работает для графов, состоящих из нескольких узлов (10 или 20), но я скептически отношусь к ситуации, когда графики состоят из 40 000 узлов. Любое предложение очень ценится.
https://en.wikipedia.org/wiki/Prim%27s_algorithm – deviantfan
Я сожалею, я не могу видеть, как это отвечает на мой вопрос ... –
50K элементов в структуре данных является тривиальным размер для компьютера. Вы беспокоитесь о деталях, которые не имеют значения. – JSF