алгоритм — Правильное использование ссылок PHP в моем случае

Я хочу реализовать алгоритм Aho-Corasick. Я сделал Trie, и это работает, я сделал удаление из Trie, вставки и поиска. Но когда я попытался вставить свои тестовые данные (~ 56 тыс. Слов), PHP выдал ошибку:

php достиг лимита памяти на один скрипт (128 мб).

Итак, я думаю, что проблема в том, что я неправильно использую ссылки. Вот часть моего кода, где я получаю сообщение об ошибке:

public function insert($key, $value) {
$current_node = &$this->root; // setting current node as root node

for ($i = 0; $i < mb_strlen($key, 'UTF-8'); $i++) {
$char = mb_substr($key, $i, 1, 'UTF-8');

$parent = &$current_node; // setting parent node

if (isset($current_node['children'][(string)$char])) {
$current_node = &$current_node['children'][(string)$char];
if (isset($current_node['isLeaf']))
unset($current_node['isLeaf']);
} else {
$current_node['children'][(string)$char] = [];
$current_node = &$current_node['children'][(string)$char];
}

$current_node['parent'] = &$parent;

if ($i == (mb_strlen($key, 'UTF-8') - 1)) {
$current_node['value'] = $value;
if (!isset($current_node['children'])) {
$current_node['isLeaf'] = true;
}
}
}
}

Я думаю, что проблема в том, что я пытаюсь хранить все массивные ссылки, а не просто адреса в стиле C / C ++. Итак, могу ли я решить эту проблему в стиле C / C ++? Есть ли у него php-инструмент? Что если я напишу php-расширение на C, а затем просто добавлю его в свой php-интерпретатор?

1

Решение

Задача ещё не решена.

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

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

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