структуры данных — Каков наилучший способ хранения таблицы в Stack Overflow

Я программирую дерево решений на C ++, используя слегка измененную версию Алгоритм C4.5. Каждый узел представляет атрибут или столбец вашего набора данных, и у него есть дочерние элементы для каждого возможного значения атрибута.

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

Основная цель состоит в том, чтобы сделать это максимально эффективным способом памяти и времени (в порядке приоритета).

Лучший способ, который я подумал, это иметь массив массивов (или std :: vector) или что-то в этом роде, и для каждого узла есть список (массив, вектор и т. Д.) Или что-то с column,line(вероятно, кортеж) пары, которые действительны для этого узла.

У меня теперь должен быть лучший способ сделать это, какие-либо предложения?

ОБНОВИТЬ: Что мне нужно, это что-то вроде этого:

В начале у меня есть эти данные:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False

Но для второго узла мне просто нужны эти данные:

Paris    4    5.0
New York 7    1.3
Paris    9    6.8

И для третьего узла:

Tokio    2    9.1
Tokio    0    8.4

Но с таблицей миллионов записей с сотнями столбцов.

Я имею в виду, что все данные хранятся в матрице, а затем для каждого узла хранится информация о текущих столбцах и строках. Что-то вроде этого:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False

Узел 2:

columns = [0,1,2]
rows = [0,1,3]

Узел 3:

columns = [0,1,2]
rows = [2,4]

Таким образом, в худшем случае я просто должен тратить

size_of(int) * (number_of_columns + number_of_rows) * node

Это намного меньше, чем наличие независимой матрицы данных для каждого узла.

1

Решение

Как насчет использования в Trie: http://en.wikipedia.org/wiki/Trie.

Также обсуждается, как реализовать trie:
Три реализация

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]