btromanova (btromanova) wrote,
btromanova
btromanova

Categories:

Про алгоритмы, выученные наизусть

Так уж вышло, что я в этом году веду лекции по дискретному анализу в МАИ. Предмет на самом деле должен бы называться "Алгоритмы-2" (после алгоритмов-1, которые ведутся на первом курсе, но называются каждый год по-разному). Кому интересно, программу можно посмотреть тут: http://k806.ru/daexam1. Курс, на мой взгляд, по содержанию очень хороший и полезный (автор не я, так что имею право хвалить). По форме --- не знаю. Судя по тем ответам, которые я слышу на экзамене, у меня не очень получается его вести.

Поясню последнюю мысль. Сегодня была первая из двух возможных пересдач. Вопрос, который "завалил" большинство отвечавших (с горем пополам сдали трое из двенадцати) --- алгоритм Кнута-Морриса-Пратта или же любой другой алгоритм быстрого поиска подстроки в тексте с линейной оценкой времени препроцессинга образца. В свое оправдание могу сказать, что я не придиралась к псевдокоду или конкретным деталям реализации, я просто просила объяснить хотя бы один из вариантов, как оно может работать.

КМП --- это не самый простой алгоритм, и меня бы не пугало, что человек, в первый раз его прочитавший, не может сразу сообразить, что к чему. Пугает меня другое --- то что люди отчаянно пытаются его мне рассказать, не понимая смысла. Некоторые заучивают наизусть определения или псевдокод, что довольно сложно, т. к. рифмы там нет, а восстановить по памяти несвязанную последовательность перестановок букв и индексов реально тяжело. Я, кстати, пробовала. Первый семестр матана я сдавала примерно так. Надо сказать, что наш дискретный анализ отличается от математического простотой конструкций и наглядностью. Тут практически не нужно абстрактное мышление, нет бесконечно малых окрестностей, несчетных множеств, многомерных пространств и т. п., зато много разных деталей, без понимания которых картинка не складывается. Соответственно, способ "сейчас запомню, потом пойму" тут работает крайне плохо.

Заучивание приводит к довольно смешным (или ужасно грустным, как вам ближе) случаям. Сегодня мне несколько раз сказали что-то вроде "ну, там была формула, но я ее не помню". Речь шла по сути о нахождении координаты точки после параллельного переноса с позиции i влево на L позиций, то есть, забытой "формулой" является i - L. Еще один пример --- вспоминание формулы для суммы арифметической прогрессии с шагом 1 (1 + 2 + 3 + .. + n = n*(n + 1)/2). Эту задачку часто дают на школьных олимпиадах по математике классе в третьем. Некоторые третьеклассники догадываются до решения, второкурсники же вспоминают формулу.

Есть еще один любимый студентами прием: "давайте я вам покажу на примере". На примерах, товарищи, ничего не видно. На примерах очень легко не заметить общего случая, рассматривая частные. На примерах очевидны многие теоремы и гипотезы, на доказательство которых потрачены (или все еще тратятся) десятки лет.

В общем, мне бы хотелось, чтобы после курса у студентов появилась привычка думать, читая алгоритмы в книжках или википедии. А еще, чтобы они научились говорить спрашивающему "я не знаю" ("... потому что вообще не читал ничего об этом, пойду почитаю, в следующий раз расскажу") или "я не понял" ("... и у меня есть конкретный вопрос, почему в этом месте написано А, а не Б"), а не бессмысленный набор заученных предложений с завершающим "а дальше я забыл". Пока все плохо, впереди второй семестр.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments