Найти пары из двух массивов условно - PullRequest
0 голосов
/ 26 января 2020

Намерение состоит в том, чтобы выяснить все пары и получить максимальное совпадение из двух наборов в двудольном графе, скажем,

A = [(f1, g1), (f2, g2), ... upto m ]
B = [(x1, y1), (x2, y2), ... upto n ]

, где f, g, x и y - положительные целые числа. Между двумя наборами существует ребро, если выполняются оба условия 1 и 2.

1: f(i) > x(j) 
2: g(i) <= y(j) 

for any i <= m, j <= n

Итерации по каждой паре выполняются дольше при больших значениях m, n. Есть ли лучший алгоритм для определения всех возможных комбинаций?

Я пробовал следующее:

  1. Сортировать A по его признаку x в обратном порядке
  2. Brute итерация по B и A.
  3. Завершение внутреннего l oop по A, когда f превышает x, удовлетворяющее условию 1, и вычисление условия 2 в пределах l oop.
...