Прошло некоторое время с тех пор, как мой класс алгоритмов в школе, так что простите меня, если моя терминология не точна.Алгоритм сокращения серии действий?
У меня есть ряд действий, которые при запуске создают какое-то желаемое состояние (в основном это набор шагов для воспроизведения ошибки, но это не имеет значения ради этого вопроса).
Моя цель - найти кратчайшую последовательность шагов, которые все еще создают желаемое состояние. Любой данный шаг может оказаться ненужным, поэтому я стараюсь как можно более эффективно удалить их.
Я хочу сохранить порядок шагов (так что я могу удалить шаги, но не переупорядочить их).
Наивный подход, который я беру, - взять всю серию и попробовать удалить каждое действие. Если я успешно удалю одно действие (без изменения конечного состояния), я начну с начала серии. Это должно быть O (n^2) в худшем случае.
Я начинаю играть с такими способами, чтобы сделать это более эффективным, но я уверен, что это проблема. К сожалению, я точно не знаю, что для Google - серия на самом деле не «путь», поэтому я не могу использовать алгоритмы сокращения пути. Любая помощь - даже просто предоставление мне некоторых условий для поиска - была бы полезна.
Обновление: несколько человек указали, что даже мой наивный алгоритм не найдет кратчайшего решения. Это хороший момент, поэтому позвольте мне немного пересмотреть свой вопрос: какие-либо идеи о приближенных алгоритмах для одной и той же проблемы? Я предпочел бы иметь короткое решение, которое будет почти кратчайшим решением быстро, чем занять очень много времени, чтобы гарантировать абсолютную кратчайшую серию. Благодаря!
Подход с разделением и завоеванием, который я описал, должен работать как приближение для больших n со многими неуместными шагами, как я указываю в расширенном ответе. – 2008-11-24 06:54:47
Я не понимаю, почему вы говорите, что это неважно, что для отладки: если это так, то Delta Debugging поможет вам автоматически минимизировать набор сбоев, вызывающих ввод ИЛИ изменений исходного кода, чтобы изолировать ошибку и т. Д. , как отметил Хастуркун. Просьба уточнить. – MaD70 2009-11-06 14:55:22