|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexander Shmidt 2:464/34.74 27 Mar 2002 16:33:54 To : All Subject : Сравнить матрицы --------------------------------------------------------------------------------
>< Е >< Е >< Хау, бледнолицый All! >< Е >< Е ><
(будешь долго за компом сидеть, не то что бледным - зеленым станешь!)
Задача есть 25*80 булевых матриц размера 14х8. Каждую из них надо сравнить на
совпадение с одной из 200 эталонных матриц (такого же размера)
_как_можно_быстрее_.
Пока делаю так:
При инициализации проги завожу 2х 14*8 масивов множеств. Таким образом, на
каждый элемент матрицы - по два множества. В одном хранятся индексы эталонов, в
которых элемент=true, в другом - наоборот.
При проверке очередной матрицы проходимся по каждому ее элементу и ищем
пересечение соответствующих множеств (эл. матрицы=true - берем множество
индексов, где этот элемент=true, =false - берем множество индексов, где
элемент=falsе). В конце прохода имеем в результирующем множетсве либо индекс
эталона, которому соответствует проверяемая матрица, либо ничего (тоже
результат).
Как сделать еще быстрее? Каждая мелочь поможет, каждый такт - на вес золота.
Может проверять множества не подряд, а в определенном порядке (чтоб быстрее
закончить проверку: если на каком-то этапе уже есть множество, содержащее <=1
элемент, вываливаемся из процедуры)? Сначала проверять какие-то определенные
"контрольные" множества, потом - менее определяющие?
Good bye, mister All _
/_| _ _ _/
Smith, ( | (/ (- /) / Smith...
_/
... Hам осталось по чуть-чуть самых разных win... (с) ~Сплин
--- А у твоего ГолДеда стоит... фильтрация мессаг???
* Origin: Дайте напиться воды воспитаннику упавшей Винды... (2:464/34.74)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/207693ca1ea6d.html, оценка из 5, голосов 10
|