Вверх ↑
Этот топик читают: Гость
Ответов: 8928
Рейтинг: 823
#1: 2009-04-18 20:54:33 ЛС | профиль | цитата
Задача такая: имеются более 1000 заранее известных строк из 0 и 1 (0100101110101110010011111110010100011110010...) длиной от 32 до 255, в среднем 64.
Надо сравнить с ними одну строку посимвольно начиная слева и выбрать наиболее похожую, ничего особо сложного, кроме времени - на один цикл отводится не более 2 мсек
Решаем задачу в лоб code_12864.txt и получаем 4-5 секунд
Та же задача через IC code_12865.txt 40 мсек, уже лучше, но ещё далеко!
Преобразовываем строки из 1 и 0 в байты и символы и делаем побитное сравнение code_12866.txt - 4 мсек! уже рядом, ещё бы наполовину сократить, но светлые мысли кончились
Кто сможет помочь, у кого они (светлые мысли) роятся
карма: 19

0
файлы: 3code_12864.txt [5.8KB] [216], code_12865.txt [5.5KB] [197], code_12866.txt [7KB] [195]
Ответов: 3514
Рейтинг: 184
#2: 2009-04-18 20:59:11 ЛС | профиль | цитата
FTCG?
карма: 0
0
Ответов: 5227
Рейтинг: 587
#3: 2009-04-18 21:15:58 ЛС | профиль | цитата
Леонид, непонятно только наиболее похожую, в процентном отношении или же обсолютно похожую?
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 3851
Рейтинг: 159
#4: 2009-04-18 21:21:00 ЛС | профиль | цитата
Леонид писал(а):
выбрать наиболее похожую

по длине и содержанию или наоборот - по содержанию и длине?

для содержания можно попробовать XOR с подсчётом нулей (или единиц)..
------------ Дoбавленo в 21.22:
andrestudio, наиболее допускает неточности..
карма: 0
начавший
0
Ответов: 5227
Рейтинг: 587
#5: 2009-04-18 21:29:14 ЛС | профиль | цитата
Андрей., меня вот это насторожило
Леонид писал(а):
Преобразовываем строки из 1 и 0 в байты и символы и делаем побитное сравнение

не знаю толи это но для обсолютного сравнения так
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1project.zip [12.7KB] [176]
Ответов: 8928
Рейтинг: 823
#6: 2009-04-18 21:55:37 ЛС | профиль | цитата
Астрамак, FTCG по скорости приближается к IC, но там не хватает компонентов.
andrestudio, наиболее похожую, не абсолютно равную, по первым слева на длину стандартной строки.
Андрей., применил сдвиг и сравнение: ((_Chr shr k) and 1)=((_ChrSt shr k) and 1), где k - от 0 до 7 для байта.
карма: 19

0
Ответов: 3851
Рейтинг: 159
#7: 2009-04-18 22:03:16 ЛС | профиль | цитата
Леонид, я плохо понимаю эту формулу, но думаю XOR будет правильнее ведь при сдвиге определяется равенство побайтно, а в байте может быть одно отличие, а может и больше, или требуется уточнить условие - что значит наиболее
карма: 0
начавший
0
Ответов: 8928
Рейтинг: 823
#8: 2009-04-18 22:28:38 ЛС | профиль | цитата
Андрей., вернее not(A xor B) - но операция выдаёт число: not(16 xor 25)=246, а мне нужна сумма единичек в двоичном представлении этого числа, т. е. 246=11110110 шесть шт. единичек, именно поэтому и сдвигаю байт 8 раз и 8 раз сравниваю с 1, переводить 246 делением на 2^n ещё дольше
------------ Дoбавленo в 22.37:
andrestudio, вероятность абсолютного совпадения мала (~1/2^64), да и время 150 мсек
карма: 19

0
Ответов: 3851
Рейтинг: 159
#9: 2009-04-18 22:44:52 ЛС | профиль | цитата
Леонид, именно - с подсчётом колличества этих 1 (или 0)
------------ Дoбавленo в 22.47:
осталось вычислить - какие методы работают быстрее - математические или текстовые (если не применять IC)..
карма: 0
начавший
0
Ответов: 373
Рейтинг: 108
#10: 2009-04-19 02:20:54 ЛС | профиль | цитата
Если не секрет где вы собираетесь применять такое сравнение?
карма: 0

0
Ответов: 8928
Рейтинг: 823
#11: 2009-04-19 09:00:45 ЛС | профиль | цитата
Vlad.-, аналог нейроннй сети; не хватает денег, чтобы приобрести 256 шт. PIC и желания, что бы запрограммировать и распаять их
карма: 19

0
Ответов: 199
Рейтинг: 44
#12: 2009-04-19 10:41:43 ЛС | профиль | цитата
Может быть провести предварительно статистический анализ строк: соотношение и перемешенность 0 и 1, и т.д., затем начать проверку со статистически наиболее близких строк,
тем самым сократив кол-во проверок?

карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#13: 2009-04-19 11:57:13 ЛС | профиль | цитата
Может пакет FASM поможет?
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 16884
Рейтинг: 1239
#14: 2009-04-19 12:14:00 ЛС | профиль | цитата
Леонид, я выкладывал If_perc c ИИ - должен подойти. Сравнивает посимвольно и выводит процент совпадений.
Сейчас на работе, если не найдете, то вечером выложу.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1397
Рейтинг: 50
#15: 2009-04-19 12:23:15 ЛС | профиль | цитата
Tad, а праздник???
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)