n-мерный алгоритм соответствия

Я думаю, что буфер клавиатуры виноват.

Одним из решений было бы обойти это: событие keydown только начинает движение, и затем вы продолжаете перемещать своего персонажа внутри цикла (setInterval или requestAnimationFrame), пока не произойдет keyup.

Примерно так (анимация, возможно, сырая, но работает как PoC): https://codepen.io/anon/pen/VRgNrQ

5
задан Herman 24 March 2009 в 15:41
поделиться

3 ответа

Если Вы хотите найти самое близкое соответствие для одного человека, Bentley & Shamos опубликовала многомерный метод делить-и-побеждать: делить-и-побеждать в O (N регистрируют N), время: делить-и-побеждать в многомерном пространстве в Продолжениях восьмого ежегодного симпозиума ACM по Теории вычислительного 1976. Если Вы не можете получить копию, это может также быть полезно.

Однако для Вашего примера приложения, на самом деле находящего ближайшему соседу, кажется, не самая большая проблема - намного более хитрый, отображает исходные данные в размеры. Например, если один размер, "любит животных", какое значение Вы даете кому-то, кому нравятся собаки и кошки, но не могут выносить лошадей? Что относительно кого-то то, кто любит лошадей, думает, что собаки в порядке, раздражается кошками и двойствен о золотой рыбке?

6
ответ дан 14 December 2019 в 04:48
поделиться

Прежде всего выберите язык, с которым Вы являетесь самыми знакомыми. Алгоритмы для обработки этого довольно просты, и должны работать на любом современном языке. (Как долго как существует некоторое понятие массива и потенциально матричная библиотека, необходимо быть в порядке.) я реализовал многие из них в C, C++ и C# прежде, но видел реализации в Python, vb.net, и т.д.

В зависимости от того, что Вы пытаетесь сделать, существует несколько опций.

Однако что Вы хотите сделать, зависит от Ваших целей. Если Вы просто хотите найти лучшее соответствие, можно использовать простые расчеты расстояния (т.е.: sqrt суммы квадратов для каждого размера/свойства в n-мерном массиве), дополнительно вес каждое расстояние свойств и использование самая близкая точка.

Если Вы захотите группироваться люди, то Вы захотите посмотреть на кластеризирующиеся алгоритмы. Для данных как это я подозревал бы, что некоторая форма кластеризации K-средств или нечеткой кластеризации c-средств будет работать лучшее.

1
ответ дан 14 December 2019 в 04:48
поделиться

Процесс, который Вы упоминаете, известен как k-nearest сосед с k=1. Это - самый интуитивный подход для нахождения подобных векторов.

http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm

0
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: