время сжигать мосты, время искать ответ и менять сгоревшие лампочки
Сегодня все утро пыталась довести до ума пост о вычислительной сложности. Но все же это сложновато объяснить без самого кода. Обычно вычислительную сложность объясняют сразу на коде, подсчетом элементарных операций, потом устремляя входные данные к бесконечности (привет пределам!) и...вот как это все объяснить? Для меня тема вычислительной сложности всегда была мутная, я где-то на подсознательном уровне примерно определяю асимптотику и всю жизнь пользовалась только обозначением О-большое. А стала тут копаться... Тема то очень интересная! Очень важная и базовая. Ну как теория алгоритмов без вычислительной сложности? Без временной и емкостной сложностей?
А тут стала писать пост, думая о том, ну чего тут сложного? Есть входные данные, есть какая-то зависимость, есть предельная граница худшего варианта, что тут объяснять? Все предельно просто, особенно если буду рассказывать в контексте той задачи, которую разобрали в прошлый раз. А тут вдруг приплелись комбинаторика, математический анализ и теория вероятностей. И вот ту понимаешь, что во-первых плаваешь в теме, а во-вторых вот тебе и образование - все университетские предметы все это время были связаны. Не, это и так понятно было, но я никогда не сталкивалась с этим вплотную.
А еще я думала, что это будет проходным материалом, а потом начнется самая жара, когда затронем P и NP - классы. Эх, все же логично начинать изучать алгоритмистику с сортировок, поиска и представления данных. Даже на тех же сортировках вычислительную сложность объяснить намного легче, чем на NP-трудной задаче =___=
А тут стала писать пост, думая о том, ну чего тут сложного? Есть входные данные, есть какая-то зависимость, есть предельная граница худшего варианта, что тут объяснять? Все предельно просто, особенно если буду рассказывать в контексте той задачи, которую разобрали в прошлый раз. А тут вдруг приплелись комбинаторика, математический анализ и теория вероятностей. И вот ту понимаешь, что во-первых плаваешь в теме, а во-вторых вот тебе и образование - все университетские предметы все это время были связаны. Не, это и так понятно было, но я никогда не сталкивалась с этим вплотную.
А еще я думала, что это будет проходным материалом, а потом начнется самая жара, когда затронем P и NP - классы. Эх, все же логично начинать изучать алгоритмистику с сортировок, поиска и представления данных. Даже на тех же сортировках вычислительную сложность объяснить намного легче, чем на NP-трудной задаче =___=
На примере "вот тут операций больше, потому выполняться будет дольше, чем вот в этом алгоритме").
А операции и так у тебя есть) только не код, а "открыть крышку чайника".
Думаю, для людей только знакомящихся с алгоритмами и вряд-ли будущих профессиональными алгоритмистами строгость и т.п. можно опустить.
Неплохое для себя описание сложности нашёл в книге «Алгоритмы. Руководство по разработке» Стивен Скиена.
Ещё в «Алгоритмы. Теория и практическое применение» Стивенс Род - там, кстати, и про способ определить: является ли связный список замкнутым, или нет (задачка из Гугла).
Падмелина, жесть)) Вот ладно я, уже почти старуха, которая матанчик благополучно забыла (ну, судя по опыту, могу быстро вспомнить), но у второкурсников то! Должно быть все свежо в памяти
Cherrished, мои мысли о вас всех, на самом деле^^