Создайте дерево, используя функции get / set, которые принимают произвольное количество параметров - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь создать две функции: get & set, которые принимают произвольное количество параметров (скажем, 4). Функция set принимает массив и устанавливает его в memcached, функция get получает массив из memcached и возвращает его.

function get($a, $b, $c, $d) {
    ...
    return $array;
}

function set($a, $b, $c, $d, $array) {
    ...
}

Пусть будет 5 возможностей для $ a, 10 возможностей для $ b, 100 возможностей для $ c и 1000 возможностей для $ d.

Твист: гарантированно только $ a, но всегда должен быть ответ, который нужно получить (в зависимости от того, какие данные ему переданы). Он также должен уметь обрабатывать случай, когда для заданных $ a, $ b, & $ c, если нет ничего установленного, соответствующего всем трем из этих параметров, он идет вверх (в древовидном смысле) и находит ближайший соответствие основано на приоритете параметра).

Сейчас я думаю о построении некоторой формы взвешенного дерева с приоритетами параметров и назначенными весами (например, $ a имеет приоритет 100, $ b имеет приоритет 10, $ c имеет приоритет 90, $ d имеет приоритет 50 ) ...

Код не зависит от языка и ищет идеи о том, как подойти к нему (наиболее эффективно / действенно). Заранее спасибо!

1 Ответ

1 голос
/ 30 марта 2012

Я бы подошел к этому как к проблеме поиска ближайшего соседа ( ссылка на википедию - довольно хорошее резюме). Если вы можете найти подходящую метрику расстояния, возможно, вам лучше использовать готовый алгоритм / структуру данных, скажем, R-Tree .

...