11.07.2015 Views

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

M:= aесли b > a то M:= b всеесли c > b то M:= с всеПриведите контрпример, то есть такие значенияa, b и c, при которых значение M будет отличатьсяот max(a, b, c). Как можно исправить эту программу,заменив в ней всего один символ?3. Докажите или опровергните правильностьпрограммы для выбора максимального из трех значений,записанных в переменных a, b и c:если a > b то M:= aиначе если b > c то M:= bиначе если c > a то M:= cвсе; все; всеЕсли это программа некорректная, приведитеконтрпример. Может ли быть, что при каких-товходных данных значение переменной M будет неопределенным?4. Докажите, что следующий фрагмент программыправильно сортирует значения в переменныхa, b и c по возрастанию, то есть всегдаполучается a ≤ b ≤ c:если a > b то поменять(a, b) всеесли b > c то поменять(b, c) всеесли a > b то поменять(a, b) всеАлгоритм поменять меняет местами значенияпеременных-параметров.5. В игре “ним” двое игроков по очереди беруткамни из двух кучек. За один ход можно взять любоененулевое количество камней, но только из однойкучки. Тот, кому не осталось камней, проигрывает.Как определить, кто выиграет при правильнойигре? Какой инвариант обеспечивает выигрыш?6. Определите инварианты для следующих циклов.Что будет вычислено в переменной b?а)k := 0; b := 1;while k < n do begink := k + 1;b := b * a;end;б)k := n; b := 1;while k > 0 do begink := k - 1;b := b * a;end;7. Определите предусловие и постусловие для алгоритмова) нахождения суммы всех делителей числа;б) проверки числа на простоту;в) определения количества слов в символьнойстроке;г) двоичного поиска элемента в отсортированноммассиве;д) перестановки элементов массива в обратномпорядке;е) преобразования числа из символьной записив значение целого типа.8. Предложите другие начальные значения переменныхb, k и p в алгоритме быстрого возведения встепень. Инвариант цикла должен сохраниться.9. Оцените сложность алгоритма быстрого возведенияв степень при n = 2 m .Самое важное• Интуитивное понятие алгоритма, которое мыиспользовали ранее, непригодно для математическогодоказательства неразрешимости задач.• Входные и выходные данные любого алгоритмаможно закодировать в виде последовательностейсимволов некоторого алфавита (и даже двоичногоалфавита).• Про любой алгоритм можно сказать следующее:o алгоритм получает на вход дискретный объект(например, слово);o алгоритм обрабатывает входной объект пошагам (дискретно), строя на каждом шаге промежуточныедискретные объекты; этот процессможет закончиться или не закончиться;o если выполнение алгоритма заканчивается,его результат — это объект, построенный напоследнем шаге;o если выполнение алгоритма не заканчивается(алгоритм зацикливается), то результат егоработы при данном входе не определен.• Алгоритм — это программа для некоторого исполнителя.• Универсальный исполнитель — это исполнитель,для которого можно построить алгоритм,эквивалентный любому алгоритму для любого другогоисполнителя. Все универсальные исполнителиэквивалентны между собой.• Каждый алгоритм задает (вычисляет) функцию,которая преобразует входное слово в результат (выходноеслово). Алгоритмы называются эквивалентными,если они задают одну и ту же функцию.• Вычислимая функция — это функция, для вычислениякоторой существует алгоритм. Любаявычислимая функция может задаваться разнымиалгоритмами.• Алгоритмически неразрешимая задача — этозадача, соответствующая невычислимой функции.• Говорят, что алгоритм имеет асимптотическуюсложность O(f(n)), если найдется такая постоянная c,что, начиная с некоторого n = n 0, выполняется условиеT(n) ≤ c ⋅ f(n).• Задачи оптимизации, которые решаются толькополным перебором вариантов, могут иметь,например, асимптотическую сложность O(2 n ) илиO(n!). Эти функции при больших n возрастают быстрее,чем многочлен любой степени.• Чтобы обеспечить надежность программы, используютметоды доказательного программирования:разработка программы ведется одновременнос доказательством ее правильности.• Инвариант цикла — это соотношение междувеличинами, которое остается справедливым послезавершения любого шага цикла.Список литературы1. Андреева Е.В., Босова Л.Л., Фалина И.Н. Математическиеосновы информатики. Учебное пособие.М.: Бином, 2005.2. Успенский В.А. Машина Поста. М.: Наука,1988.21январь 2012 / ИНФорматика

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!