Математическая техника для проверки пересечения - PullRequest
0 голосов
/ 22 января 2010

Представьте себе, что есть очень очень большая комната в форме полого куба. В неподвижных отдельных точках комнаты висят волшебные шары. Ни у одного магического шара нет другого точно над ним. Если мы возьмем воображаемую горизонтальную плоскость бесконечной области и пройдем через куб, как мы можем быть уверены, что самолет не прорезает ни один из магических шаров?

Высота магического шара определяется как функция его положения (x и y). Распределение происходит таким образом, что некоторые шары находятся на одной высоте, а другие - на разной высоте. Пусть функция будет
z = axy + bx + cy
где a, b, c - положительные целочисленные константы. Позиции (значения оси x и оси y), а также высота (z) являются дискретными значениями (для простоты мы можем считать их положительными целыми числами).

Если бы функция распределения шаров была z = 10xy + 8x + 4y, то невозможно иметь значение az 15 или 21. Таким образом, плоскость при z = 15 или z = 21 не срезала бы ни одну из мячи! Фактически, в этом случае любая плоскость с высотой (z = любое нечетное число) не будет прорезать шары. Заметно, что есть несколько плоскостей с высотой в виде четных чисел, которые не прорезают шары.

Мы не хотим находить высоты всех магических шаров и сравнивать их с высотой горизонтальной плоскости, поскольку это все равно, что пробовать все возможные комбинации, и это займет очень много времени даже на компьютере.

Наша цель - найти быстрый метод, с помощью которого мы можем определить, может ли данное значение z (высота) быть получено любой парой (x, y) (позиций). Если данное z не может быть произведенный, тогда самолет в той высоте не прорезает любые шары! Этот вопрос также аналогичен нахождению того, присутствует ли данное число в последовательности, образованной функцией двух переменных.

Было бы очень полезно, если бы U мог дать мне какие-либо предложения по решению этой проблемы. Благодарю вас. (Я уже пробовал эволюционные вычисления, такие как GA, PSO, DE, SA и т. Д. Метод должен быть детерминированным).

1 Ответ

0 голосов
/ 23 января 2010

Похоже, у вас в комнате много шаров. Высота помещения от z = A до z = B. Что вас интересует, так это то, находятся ли они на высоте z. Чтобы сделать это, не обязательно итерируя по всем шарам, вам нужно начать с предположения, что диапазон от A до B пуст, и итерировать по шарам, помечая части этого диапазона как полные, пока он не заполнится полностью или не будет шаров , В первом случае ни один самолет не удовлетворит, но вы не прошли все шарики, чтобы узнать это. В последнем случае у вас есть диапазоны z, в которых нет шариков, и вы можете использовать их, чтобы легко проверить более одной плоскости, однако с начальной стоимостью итерации по всем шарикам.

...