Я пытаюсь сделать программу возврата в Prolog для определения всех подмножеств коллинеарных точек. Проблема: заданы n точек в плане (представлены с использованием его координат). Напишите предикат для определения всех подмножеств коллинеарных точек.Все подмножества коллинеарных точек - Prolog
Пример:
Входной сигнал: [[1,1], [2,2], [3,3], [0,0], [4,8], [1,2], [ 6,7], [8,9], [10,11]]
Выход: [[[1,1], [2,2], [3,3]], [[1,1] , [2,2], [0,0]], [[2,2], [3,3], [0,0]], [[1,1], [3,3], [0, 0]], ...]
до сих пор я при проверке священник научил, если 3 балла коллинеарны, проверяя эту формулу:
(Xc - Xa)/ (Xb - Xa) = (Yc - Ya)/ (Yb - Ya).
Но я не думайте, что это сработает, потому что мне нужно решить проблему, используя обратную трассировку. Я должен взять по одному кандидату при каждом вызове функции, чтобы узнать, совпадает ли он с остальными.
Не могли бы вы предложить мне правильный способ проверки, если 3 точки являются коллинеарными?
То, что вы описали, не совсем понятно! Вы должны дать хотя бы простой пример ввода и ожидаемого вывода ... Из того, что я понял. Если у вас есть список точек, вы можете рекурсивно проверить их в группе из 3, чтобы увидеть, являются ли они коллинеарными и как базовый случай последние 3 балла .... – coder
@coder, я привел здесь пример. Извините за это, я полностью забыл. И да, мне нужно рекурсивно найти все подмножества из 3 точек, которые являются коллинеарными. – GritcoAndreea
, что вход не имеет смысла в качестве прологового стартового запроса ... но в целом у вас есть правильная идея. Три точки a, b, c являются колинеарными, если наклон a, b и b, c один и тот же (но для любого порядка входов). –