3622
правки
Изменения
переписано определение
{{Определение
|definition=
'''Meet-in-the-middle''' (Встреча в середине) — это метод решения уравнения вида <tex> f({x}) = g({y}) </tex>, где <tex> x \in {X} </tex> и <tex> y \in {Y} </tex>, который работает за время <tex> {O((X + Y)\logF_X(y))</tex>, где <tex> F_X(Y) </tex> {{X---}})время поиска элемента <tex> x </tex> в множестве <tex> X </tex>, удовлетворяющее решению при заданном <tex> y </tex>, или проверка, что такого <tex> x </tex>не существует.}}'''Meet-in-the-middle''' разбивает задачу пополам и решает всю задачу через частичный расчет половинок. Он работает следующим образом: переберем все возможные значения <tex> {x} </tex> и запишем пару значений <tex> ({x},{f({x})}) </tex> в массив, который мы отсортируем по второму элементу (значению функции)множество. Затем будем перебирать всевозможные значения <tex> {y} </tex>, для каждого из них будем вычислять <tex> fg({y}) </tex>, которое мы будем искать в нашем отсортированном массивемножестве. Таким образомЕсли в качестве множества использовать отсортированный массив, а в качестве функции поиска {{---}} [[Целочисленный двоичный поиск | бинарный поиск]], то время работы нашего алгоритма составляет <tex> {O(X\log{X})} </tex> на сортировку, и <tex> {O(Y\log{Y})} </tex> на двоичный поиск, что дает в сумме <tex>{O((X + Y)\log{X}})</tex>.
== Задача о нахождение четырех чисел с суммой равной нулю ==