Компьютерные инструменты в образовании, 2015
№ 3: 45-49
УДК: 510.5 + 510.6
http://ipo.spb.ru/journal
программы обучения
МАТЕМАТИЧЕСКАЯ ЛОГИКА ДЛЯ ПРОГРАММИСТСКОЙ СПЕЦИАЛЬНОСТИ НА МАТ-МЕХЕ В СПбГУ
Математическая логика в широком смысле этого слова включает в себя теорию логических исчислений, фомализованные теории, теорию алгоритмов и теорию сложности алгоритмов. Все эти разделы были созданы в прошлом веке. Для специальностей, готовящих будущих программистов и разработчиков разнообразных математических алгоритмов (а не только кодировщиков известных алгоритмов), на математико-механическом факультете Санкт-Петербургского государственного университета в течение 15 лет читался курс математической логики.
Ключевые слова: математическая логика, обучение, программирование.
В РФ в 2015 году в последний раз проводятся защиты дипломных работ по специальности «МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ И АДМИНИСТРИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ» с присвоением квалификации «математик-программист». Эта специальность была организована с моим активным участием в 2000 году. Тогда министерство образования и науки РФ осуществляло сокращение перечня специальностей, по которым предстояло начать обучение студентов 1-го курса всех российских вузов. Эта специальность вошла в учебно-методическое объединение (УМО) при Санкт-Петербургском государственном университете (СПбГУ). Программа обучения по этой специальности была нацелена на обучение программированию математических алгоритмов дискретного характера. В результате обучения студентов не планировалось получить математиков или прикладных математиков в широком смысле этих слов. Но планировалось подготовить программистов, способных не только понимать, но и программировать алгоритмы, разработанные в дискретных разделах математики. За 15 лет много вузов лицензировало эту специальность. От Калининграда до Владивостока находятся вузы, обучающие по этой специальности. В МГУ по ней обучают только на платной основе. Таким образом, эта специальность оказалась широко востребованной различными вузами, по-видимому, благодаря явной программистской и математической направленности примерного учебного плана для этой специальности. Детальной разработкой этого учебного плана первоначально занимался проф. Б.К. Мартыненко, а затем доц. В.А. Костин, который является учёным секретарём учебно-методической комиссии (УМК) по этой специальности при УМО от СПбГУ. В УМК оперативно решаются различные вопросы, возникающие при обучении по этой специальности, а также по этому направлению. Следует отметить, что на кафедре информатики (одной из четырёх кафедр, обучающих по этой
Косовский Николай Кириллович
Аннотация
1. НЕМНОГО О СПЕЦИАЛЬНОСТИ
Косовский Н. К.
специальности в СПбГУ) по совместительству работает ряд преподавателей из РАН, точнее из ПОМИ РАН и СПИИРАН, в частности, имеющие учёную степень доктора физико-математических или технических наук. Кроме этого, стандартно высокий конкурс на эту специальность (а теперь и на направление) позволяет обеспечить высокую интеллектуальную программистскую среду обучения студентов. Дальнейшее обучение студентов, закончивших эту специальность, иногда проходило в аспирантуре, как правило, в рамках специальностей «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» и «Теоретические основы информатики» с дальнейшей защитой кандидатских диссертаций с присвоением степени кандидата физико-математических наук. Преемственность обучения по этой специальности продолжают в настоящее время бакалавриат и магистратура по направлению, имеющему то же название, что и специальность. В 2015 году будет осуществляться защита первых выпускных работ бакалавров по этому направлению.
2. ЛОГИЧЕСКАЯ ФОРМАЛИЗАЦИЯ И АЛГОРИТМИЗАЦИЯ
Логическая формализация и алгоритмизация аксиоматических разделов математики на основе математической логики и теории алгоритмов явилась существенным прорывом в математике XX века. Это был важный шаг на пути реализации идей Г. Лейбница о том, что надо «не спорить, а вычислять». Однако эта идея оказалась не выполнимой полностью. Даже для элементарной теории чисел задача проверки истинности её утверждений оказалась алгоритмически неразрешимой. Человечество использует множество формализованных конструкций, являющихся иногда весьма сложными, например, игра в шахматы, различные формы юридических, дипломатических и военных правил. Но самым востребованным умением в последнее время оказались процессы, связанные с программированием, включая алгоритмизацию решения самых разнообразных задач. Поэтому студенты, обучаемые программированию, должны на практике знакомиться со сложными для первоначального понимания компактными средствами организации программ, разработанными в теории алгоритмов и в языках, предназначенных для решения задач искусственного интеллекта. Исторически первым было сформулировано исчисление предикатов, завершившее формализацию общепринятой элементарной математической логики с кванторами по объектам рассматриваемой совокупности. Изобретению возможности свободного использования последовательности кванторов всеобщности и существования человечество обязано Г. Фреге. Теорему о полноте исчисления предикатов сформулировал и доказал К. Гёдель. Формализация математического понятия алгоритма была предложена в нескольких вариантах. Например, общерекурсивные функции, машины Тьюринга и алгоритмы Маркова. Алгоритмизация часто заключалась в замене кванторов ограниченными переборами, реализуемыми с помощью циклов. Затем встал вопрос об эффективной алгоритмизации, в частности, об алгоритмизации за полиномиальное от длины исходных данных число шагов.
3. СОДЕРЖАНИЕ КУРСА МАТЕМАТИЧЕСКОЙ ЛОГИКИ ДЛЯ ОБУЧАЮЩИХСЯ ПО ЭТОЙ СПЕЦИАЛЬНОСТИ
Основная идея подбора теорем и логических исчислений курса — это демонстрация достижений XX века, полезных для непосредственного использования при планировании разработки программ решения разнообразных задач (в основном, задач искусствен-
ного интеллекта). Все эти годы в 3-ем семестре я читал курс «Математическая логика» 2 часа лекций и 2 часа практических занятий в неделю. Этот курс имел целью обучить студентов формализации в рамках математической логики, а также подробной алгоритмизации средствами математических понятий алгоритмов. К сожалению, освоение формализованных разделов вызывает у современных студентов значительные трудности. Последнее отражается на оценках, получаемых на экзамене. В начале курса лекций излагается секвенциальное исчисление высказываний с обратимыми правилами. Приводится схема доказательства теоремы об обоснованности и полноте этого исчисления. Далее формулируется секвенциальное прикладное исчисление предикатов с обратимыми правилами. Выбор именно секвенциальных исчислений для изложения студентам обоснован тем, что в них отсутствует необходимость «угадывания» посылок правила при построении вывода заданной формулы. Это существенно упрощает поиск вывода как в исчислении высказываний, так и в исчислении предикатов. Далее формулируются аксиомы равенства и аксиомы согласованности с равенством используемых функций и предикатов. Формулируется арифметика (точнее, аксиоматическая теория чисел) и доказывается Первая теорема Гёделя о неполноте арифметики. Эта арифметика затем расширялась бесконечно большими числами и аксиомами для них. Доказывается консервативность полученного расширения. То есть доказывается, что в этом расширении арифметики не появляются новые теоремы в языке исходной арифметики. Затем излагаются аксиомы и проводится первоначальное построение аксиоматической теории множеств Цермело-Френкеля, в которой не формализуемы рассуждения, приводящие к парадоксу Б. Рассела, по сути означающего противоречивость наивной канторовской теории множеств. Излагаются также формулировки смешанных конечнозначных логик Поста на основе линейных неравенств. Такие логики позволяют описывать неполные базы данных и формализовать логику экспертных оценок (называемую автором плюралистической логикой). Эвристическая логика определяется как подлогика плюралистической логики для двух экспертов. Кроме того, конечно-значные логики Поста позволяют в разных областях работать с понятиями разной максимальной степени истинности, а также объединять эти области, сохраняя степень истинности утверждений для каждой из областей. Формулируются начальные положения теории алгоритмов и начальные сведения о теории сложности алгоритмов. Сначала вводится понятие машины Тьюринга и демонстрируются пути возможных обобщений этого понятия, включая недетерминированную машину Тьюринга. Вводится понятие нормального алгоритма Маркова и алгоритма Маркова-Поста. Доказываются простейшие теоремы о невозможности существования алгоритмов на основе математического понятия алгоритма, базирующегося на операторах языка Паскаль с переменными только для целых чисел произвольной разрядности. Даётся понятие алгоритмически неразрешимой массовой проблемы и доказываются теоремы об алгоритмической неразрешимости ряда проблем, включая проблему применимости алгоритма к данным, проблему распознавания нетривиальных свойств алгоритмов, инвариантных относительно условного равенства, и проблему выводимости в исчислении предикатов. Рассматриваются вопросы, связанные с корректной аннотацией программ. Вводится понятие частичной корректности в целом программы с предусловием, постусловием и инусловиями её выполнения. Формулируется правило для корректности в целом оператора цикла типа while. При ответах студентов на экзамене используются следующие критерии выставления оценок. Существенные ошибки в формулировках определений и теорем оцениваются как «неудовлетворительно». Безошибочные формулировки оцениваются на «удовлетворительно» с возможностью полу-
Косовский H. К.
чения более высокой оценки. У желающих получить оценку «хорошо» спрашиваются доказательства теорем. Для получения оценки «отлично» в последние годы предлагалось написать на Паскале программу с циклом типа while и аннотировать её. Более подробно изложение моего курса можно найти в учебных пособиях [2-6] написанных при моём участии.
4. ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ
Некоторые считают математику неделимой. Другие делят её на «хорошую» и «бессмысленную» (в соответствии со своими, иногда очень сильными, убеждениями). С точки зрения использования напрямую в программировании математику можно разделить на непрерывную (большая часть накопленных математических знаний, но слабо применимых в программировании), математику бесконечных множеств дискретных объектов (существенная часть математических знаний) и конечную математику. Последняя, как правило, разбросана в виде жалких частных случаев в различных математических сочинениях. Однако имеется одна книга, посвящённая введению в этот раздел математики (написанная при участии одного из авторов языка программирования Бэйсик) [1]. Впрочем, есть раздел математики под названием «Нестандартный анализ», который на первый взгляд относится к непрерывной математике, но по своей сути может быть отнесён к дискретной и даже формализованной математике. Подводя итог, можно сказать, что прошлый век явился веком создания формализованной математики, включающей в себя язык исчисления предикатов 1-го порядка и различные исчисления тождественно истинных формул в этом языке, построенных на основе формализованной аксиоматической теории чисел и формализованной аксиоматической теории множеств. Были разработаны математические понятия алгоритма, а также язык формализованных утверждений о корректности программ, написанных на языке Паскаль. Была разработана классификация алгоритмов по сложности, в частности, понятия NP-полных, NP-трудных и P-SPACE-полных задач.
Список литературы
1. Кемени Дж., СнелДж., Томпсон Дж. Введение в конечную математику. М.: Изд-во Иностранной литературы. 1963. (J.G. Kemeny, J.L. Snell, G.L. Thompson. Introduction to finite mathematics. Englewood cliffs, N. Y., Prentice-Hall. 1957).
2. Косовский Н.К. Элементы математической логики и её приложения к теории субрекурсивных алгоритмов. Л.: Изд. Ленинградского университета, 1981.
3. Косовский Н.К. Основы теории элементарных алгоритмов. Л.: Изд. ЛГУ, 1987.
4. Косовский Н.К., Тишков А.В. Логики конечнозначных предикатов на основе неравенств. СПб.: Изд-во С.-Петербургского университета, 2000.
5. Косовский Н.К. Технологии разработки инноваций. Учебное пособие. СПб.: Изд-во С.-Петерб. ун-та, 2013.
6. Яхонтов С.В., Косовский Н.К., Косовская Т.М. Эффективные по времени и памяти алгоритмические приближения чисел и функций. Учебное пособие. СПб: Изд-во С.-Петерб. ун-та, 2012.
MATHEMATICAL LOGIC FOR PROGRAMMER'S SPECIALITY AT MATH-MECH OF SPBGU
Kosovsky N. K. Abstract
Mathematical logic in the broad sense of this word includes theory of logic calculuses, formalized theories, theory of algorithms and theory of algorithm complexity. All these parts were developed in the last century. The course of mathematical logic for specialities of future programmers and developers of various algorithms (but not simply coders of a well-known algorithm) was presented at the faculty of mathematics and mechanics of St.Petersburg State University during 15 years.
Keywords: mathematical logic, teaching, programming.
© Наши авторы, 2015. Our authors, 2015.
Косовский Николай Кириллович, доктор физико-математических наук, профессор, заведующий кафедрой информатики математико-механического факультета СПбГУ, [email protected]