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

пересечение множеств (2d массивов)

Добавлено: 20 фев 2006, 18:10
buletz
есть два 2d массива , каждый размером N x 4
необходимо найти построчное пересечение этих массивов, т.е.
если представить каждую строчку как элемент, а массив - как множество элементов, то задача сводится к нахождению пересечения двух множеств.

ЗАДАЧА.

Как быстро (эффективно) найти данное пересечение ?

В данный момент у меня реализовано так :
(обознач.массивы как A и B)

цикл по i для всех строк из массива A
цикл по j для всех строк из массива B
если строка (i) из A совпадает со строкой (j) из B то
{
добавляем строку (i) из А в выходной массив.
переход к след.итерации по i
}
конец цикла по j
конец цикла по i


Данный алгоритм работает ОООЧЕНЬ медленно при больших массивах.

Как можно оптимизировать его ?

Добавлено: 21 фев 2006, 22:21
YurikGL
>если строка (i) из A совпадает со строкой (j) из B то
Приведите код процедуры сравнения....

Добавлено: 22 фев 2006, 09:33
Blood_Magic
;)

Добавлено: 22 фев 2006, 11:10
buletz
NN, NN2 : array [1..4] of integer
f:boolean;


f:=(NN[1]=NN2[1]) and (NN[2]=NN2[2]) and (NN[3]=NN2[3]) and (NN[4]=NN2[4])


Вот и все сравнение.

Добавлено: 22 фев 2006, 14:20
Игорь Акопян
хм... если найти достаточно первое пересечение - сделать Break из цикла не забыть ;)