а коробки как расположены в помещении? (т.е. стоят ли одни на других)
Нет, просто в ряд стоят, нужно по порядку переставить.
Отсортировать по весу? По цвету? Размеру? По ценности содержимого в оных?
Не важно. Можно считать, что на каждой номер написан.
ну если силы есть и оплата почасовая, то и таскайте их по одной, хоть бабл сортом переставляя, в чем вопрос?
Оптимальный алгоритм переставления коробок, естественно.
Бабл сорт будет одну и ту же коробку много раз двигать. В частности, если коробка уже на своем месте стоит, то двигать не нужно.
Нет, просто в ряд стоят, нужно по порядку переставить.
Отсортировать по весу? По цвету? Размеру? По ценности содержимого в оных?
Не важно. Можно считать, что на каждой номер написан.
ну если силы есть и оплата почасовая, то и таскайте их по одной, хоть бабл сортом переставляя, в чем вопрос?
Оптимальный алгоритм переставления коробок, естественно.
Бабл сорт будет одну и ту же коробку много раз двигать.
Тогда нужно уточнение - наличие доп пространства куда коробки временно выносить, если сортировать, скажем, quick sort - выбираем pivot, сортируем, разделяем надвое, в каждой половине выбираем свой pivot и тд
3DD писал(а): Ср июл 10, 2019 2:58 pm
Тогда нужно уточнение - наличие доп пространства куда коробки временно выносить, если сортировать, скажем, quick sort - выбираем pivot, сортируем, разделяем надвое, в каждой половине выбираем свой pivot и тд
Прежде чем искать "оптимальное" решение нужно выяснить модель (ну или cost function, которую минимизуруем), по которой эта самая оптимальность считается. Одна возможная модель - минимизируется суммарное расстояние, на которое переносятся коробки. Тогда решением будет то, что предложила Lisa выше - сначала для каждой коробки определяется её правильное конечное место. Затем берётся любая (ближайшая?) коробка, сразу переносится на своё место. При этом берётся коробка, которая занимает это место и переносится на своё правильное место. Ну и т.д. Довольно очевидно, что для этой модели решение оптимальное - каждая коробка переноситмя кратчайшим путём на своё место.
Либо скажите точнее вашу модель - быть может, нужно ещё минимизировать операции поднять / поставить коробку, или передвижение "порожняком" без коробки и т.д. Если несколько таких операций, то, наверное, это задача минимизации пути в графе - BFS?
Про EEPROM/FLASH надо было бы сразу сказать, а то при заданных условиях (уточненных и некоторых недосказанных) задача вообще может не иметь решения на практике.
Места дополнительного нет. Носит человек. А коробки со стиральными машинами.
KVA писал(а): Ср июл 10, 2019 10:21 pm
Про EEPROM/FLASH надо было бы сразу сказать, а то при заданных условиях (уточненных и некоторых недосказанных) задача вообще может не иметь решения на практике.
Места дополнительного нет. Носит человек. А коробки со стиральными машинами.
Но поговорить сойдет. :)
Ожидается, что кандидат начнет задавать уточняющие вопросы и в итоге выйдет на EEPROM!
А такой перец пойдет работать туда, где работают технически подкованные люди и могут эффективно общаться.
mikeG писал(а): Вт июл 09, 2019 4:47 pm
Вот задачка для иллюстрации смысла разных алгоритмов.
Нужно отсортировать коробки на складе. Коробки тяжелые, носить нужно по одной вручную.
mikeG писал(а): Вт июл 09, 2019 4:47 pm
Вот задачка для иллюстрации смысла разных алгоритмов.
Нужно отсортировать коробки на складе. Коробки тяжелые, носить нужно по одной вручную.
M. Ridcully писал(а): Ср июл 10, 2019 5:21 pm
Прежде чем искать "оптимальное" решение нужно выяснить модель (ну или cost function, которую минимизуруем), по которой эта самая оптимальность считается. Одна возможная модель - минимизируется суммарное расстояние, на которое переносятся коробки. Тогда решением будет то, что предложила Lisa выше - сначала для каждой коробки определяется её правильное конечное место. Затем берётся любая (ближайшая?) коробка, сразу переносится на своё место. При этом берётся коробка, которая занимает это место и переносится на своё правильное место. Ну и т.д. Довольно очевидно, что для этой модели решение оптимальное - каждая коробка переноситмя кратчайшим путём на своё место.
Тут есть один маленький гиморрой: за один цикл коробки могут не переставиться.
Например, первоначально было
2,1,4,3
передвинули коробки 2<->1, цикл закончился, 4 и 3 остались на своих местах.
Как дальше с этим быть? Надо каждый раз сканировать массив с начала и проверять, все ли коробки стоят на своих местах.
Либо придумать как бысто определять с какого номера начинать следующий цикл.