algorithm - awesome - static code analysis tools




Что такое «наивный» алгоритм и что такое «замкнутое» решение? (2)

Закрытая форма означает, что вы можете дать одно выражение как решение, которое решает его без рекуррентности / рекурсии. Здесь следует отметить, что не всегда можно найти такую ​​замкнутую форму.

Наивный означает только то, что он говорит: первое, глупое решение проблемы, которое решает ее, но, возможно, не очень эффективно с точки зрения времени / пространства. То, что человек действительно считает «наивным», зависит от говорящего, контекста и погоды на следующий день. Часто оно используется для того, чтобы отличить очень сложное решение (которое использует какую-то хитрость) от очевидной реализации.

У меня есть несколько вопросов относительно семантики терминологии, используемой при описании алгоритмов.

Во-первых, что подразумевается под «наивным» алгоритмом? Чем это отличается от других решений данной проблемы? Какие другие формы могут принимать решения?

Во-вторых, я слышал много упоминаний о наличии решения «закрытой формы». Я тоже понятия не имею, что это значит - но часто это появляется при попытке решить рецидивирующие отношения ...

Спасибо за ваше время


Наивный алгоритм - это очень простой алгоритм с очень простыми правилами. Иногда первое, что приходит на ум. Это может быть глупо и очень медленно, это может даже не решить проблему. Иногда это может быть лучшим из возможных. Вот пример проблемы и « наивных » алгоритмов:

Проблема: вы находитесь в (2-мерном) лабиринте. Найди выход. (имеется в виду: место с надписью « ВЫХОД » :)

Наивный алгоритм 1: Начните ходить и выбирайте правильный на каждом перекрестке, который вы встречаете (пока не найдете «ВЫХОД»).

Наивный алгоритм 2: Начните ходить и выбирайте случайный в каждом перекрестке, который вы встречаете (пока не найдете «ВЫХОД»).

Алгоритм 1 даже не выведет вас из лабиринтов!

Алгоритм 2 выведет вас из всех лабиринтов (хотя это довольно сложно доказать).





code-analysis