Предположим у нас есть 100 объектов разных размеров (50*90; 54*92; 150*160; 151*162 и т.д.)
есть допуск - допустим +/- 2 мм.
Необходимо сгруппировать их так, что бы было минимальное количество групп.
Я пока вижу только метод тупого перебора - брать первый объект за основу - и проверять каждый последующий на допуск, если подходит - перемещать из общего массива в массив - "Просчет 1, первый объект". Затем брать первый из оставшихся, и сравнивать с остальными оставшимися. - и так повторять пока ничего не останется.
Затем возвращаться к исходному массиву и сравнивать повторно, начиная со 2-го объекта. и т.д. В конце выбрать проход с минимальным количеством получившихся групп.
Короче, числодробилке работы хватит, но есть ли более оптимальный алгоритм, может что то из комбинаторики. Куда вообще копать?
P.s Для разъяснения: в примере размеров выше получается 3 группы 1-я 50*90, 2-я - 54*92 (54 в допуск к 50 не попадает) и 3-я (150*160 + 151*162)
есть допуск - допустим +/- 2 мм.
Необходимо сгруппировать их так, что бы было минимальное количество групп.
Я пока вижу только метод тупого перебора - брать первый объект за основу - и проверять каждый последующий на допуск, если подходит - перемещать из общего массива в массив - "Просчет 1, первый объект". Затем брать первый из оставшихся, и сравнивать с остальными оставшимися. - и так повторять пока ничего не останется.
Затем возвращаться к исходному массиву и сравнивать повторно, начиная со 2-го объекта. и т.д. В конце выбрать проход с минимальным количеством получившихся групп.
Короче, числодробилке работы хватит, но есть ли более оптимальный алгоритм, может что то из комбинаторики. Куда вообще копать?
P.s Для разъяснения: в примере размеров выше получается 3 группы 1-я 50*90, 2-я - 54*92 (54 в допуск к 50 не попадает) и 3-я (150*160 + 151*162)