Зачем складывать в выпуклую оболочку

Я исследовал выпуклый корпус и Graham Scan для его реализации, и я обратил внимание, что все использовали стеки. Поэтому я хотел спросить, почему именно стеки используются в алгоритме, какая польза от использования стеков?


person Ege    schedule 23.12.2013    source источник


Ответы (2)


В сканировании Грэма при построении корпуса необходимо вернуться, если точки не образуют левый поворот со следующими рассматриваемыми точками, поэтому предыдущие точки необходимо пересмотреть как действительные точки корпуса, поэтому мы используем стек, чтобы получить их в порядке последних посетили сначала для повторной проверки. Хотя использование стека не обязательно, вы можете использовать простой массив, чтобы сделать то же самое.

person Vikram Bhat    schedule 24.12.2013

Стек здесь можно рассматривать как абстрактную структуру данных, которая поддерживает операции push, pop и empty. Если вы прочитаете описание алгоритма сканирования Грэма, вы увидите, что это именно те операции, которые использует алгоритм, поэтому я действительно не вижу, что может быть альтернативой стеку - тогда, вероятно, это будет другой алгоритм.

Какая структура данных используется для поддержки/реализации этих операций в стеке (т. е. класс, который реализует интерфейс стека в терминах объектно-ориентированного программирования), можно решить довольно свободно. Часто используется массив, но для некоторых приложений также могут иметь смысл связанные списки.

person Nubok    schedule 23.12.2013