Здравствуйте, Azazar, Вы писали:
A>Здравствуйте, marx paul, Вы писали:
MP>>а массивы какой длины? MP>>а длина массово одинаковая?
A>Одинаковой длинны.
ну, поскольку Вы так неохотно распространяетесь о, на мой взгляд, существенных параметрах Вашей задачи, то приведу типовое решение тоже без притензий на полноту и абсолютную оптимальность.
Во-первых, (если длина массива не очень велика) можно подумать над тем, чтобы предсавлять массивы булевых элементов в ввиде байтов/слов.
Во-вторых, при добавлении нового массива надо просчитать степень похожести добавляемого массива на каждый из уже присутствующих в коллекции. Таким образом, получим lookup-table размерностью n(n-1)/2. Потом, при поиске, остается только дернуть из lookup таблицы ключик для массива, наиболее похожего на искоммый.
из постановки задачи следует, что для определения степени похожести (similarity) вам надо испольовать просто match (= количество совпадающих элементов).
Если будете читать литературу по similarities — не искушайтесь пользовать продвинутые функции типа cosine similarity — они, конечно, модные и красивые по замыслу, но работают хуже, чем та же евклидова дистанция. Для обобщения решения насчитанные similarities лучше отнормировать в пределах [0..1]. Но в Вашей постановке задачи это не критично.