Алгоритм нахождения пересечения множеств
От: SkyDance Земля  
Дата: 31.05.05 14:45
Оценка:
Есть два множества на числовой оси, хранящиеся в виде упорядоченного списка интервалов (для сокращения требований к памяти).

Пример:

мн-во A: интервал11(10-20) интервал12(20-30) интервал13(30-40)

и

мн-во B: интервал11(15-25) интервал12(28-29) интервал13(45-80)



Нужен алгоритм нахождения пересечения этих множеств.
Самое простое приходит в голову быстро:
(A + B) — (A — B) — (B — A)
где + операция объединения множеств, и — операция вычитания.
Этот алгоритм медленный и требует хранения двух дополнительных временных множеств.

Хотелось бы что-нибудь быстрое, 2*log(N) — знаю, что это возможно, но не пойму, как сделать. Есть идеи, где искать? Гугл пока не помог...


.
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.