Страница 1 из 1

Алгоритм поиска. ATmega32.

Добавлено: Пт июн 25, 2010 23:07:03
ibiza11
Всем доброго времени суток. Необходима помощь с алгоритмом поиска заданного значения в памяти .
Есть некое число размером в 10 байт (ориентировочно, но порядок такой), которое поступает в контроллер по последовательному интерфейсу (тут на самом деле неважно, как и откуда поступают эти 10 байт), есть микросхема памяти EEPROM 256 килобит, разбитая на ячейки по 10 байт (тоже не принципиально), в каждую ячейку которой записаны некоторые числа.
Необходимо как можно быстрее определить, есть ли вновь поступившее 10-ти байтное число в памяти и в какой ячейке оно находится.
Думаю самым простым способом будет перебор всех ячеек, но это очень долго. EEPROM подключена по i2c и тактируется на частоте 200кГц. Есть способ посложнее с подгрузкой в RAM контроллера части EEPROM с дальнейшим перебором и сравнением значений уже в памяти контроллера, думаю будет быстрее, но все же может есть способ побыстрее? может алгоритм какой нибудь хитрый? подскажите, кто что думает.

Re: Алгоритм поиска. ATmega32.

Добавлено: Пт июн 25, 2010 23:21:14
РадиоЛоматель
А если обнаруживать его при поступлении в контроллер по последовательному интерфейсу, а потом запоминать, куда оно будет записанно?

Re: Алгоритм поиска. ATmega32.

Добавлено: Сб июн 26, 2010 00:08:54
ibiza11
как вы себе это представляете? опишите по пунктам.

Re: Алгоритм поиска. ATmega32.

Добавлено: Сб июн 26, 2010 01:57:18
NiTr0
Если числа лежат в еепром неупорядочено - то никак.
Вычитывать первое число каждой "ячейки", сравнивать, если оно - читать/сравнивать дальше, не оно - к следующей ячейке.

Re: Алгоритм поиска. ATmega32.

Добавлено: Сб июн 26, 2010 02:25:04
РадиоЛоматель
Ну вы сказали, что числа изначально попадают в систему контроллер+еепром через последовательный интерфейс, значит, делаем вывод, что они записываются в память контроллером уже самостоятельно. На данном этапе значительно проще обнаружить нужное число, т.к оно одно (до прихода следующего) и находится в памяти контроллера. Затем запомнить его адрес в еепром. Но если "нужное число", то, которое надо найти, возникает уже после записи, то тогда так, как предложил Нитро.

Re: Алгоритм поиска. ATmega32.

Добавлено: Сб июн 26, 2010 08:07:46
Shplv
ibiza11 писал(а): может алгоритм какой нибудь хитрый? подскажите, кто что думает.

Всё уже придумано до нас: хеширование и хранение данных с одинаковым хеш-кодом "отдельно" от других данных.

Re: Алгоритм поиска. ATmega32.

Добавлено: Сб июн 26, 2010 09:12:59
ibiza11
Спасибо. Ночью с другом тоже нашли информацию о хешировании данных. Буду делать таблицу хеша при поступлении данных. Это облегчит поиск. :beer: