Некоммерческая организация «Ассоциация московских вузов» Государственное образовательное учреждение высшего профессионального образования Московский государственный индустриальный университет ГОУ ВПО МГИУ Научно-информационный материал «Вопросы и задачи к олимпиаде по информатике. Часть 1» Состав научно-образовательного коллектива: Роганова Н.А., к.т.н. Москва 2010 г. ВОПРОСЫ И ЗАДАЧИ К ОЛИМПИАДЕ ПО ИНФОРМАТИКЕ ЧАСТЬ 1. 1. Предмет науки программирование. Алгоритмы и их основные свойства. Парадигмы программирования. Примеры. 2. Задание синтаксиса языка предикатов с помощью нормальной формы Бэкуса-Наура (НФБН). Цепочки и деревья вывода. Примеры. 3. Общие определения грамматики и языка, ей порождённого. Понятие о регулярных выражениях и задание языков с их помощью. Примеры. 4. Задание семантики предикатов с помощью таблиц истинности. Тавтологии, законы эквивалентности и примеры доказательств. 5. Расширение понятия предиката. Ограничения на использование кванторов в предикатах. Определение подстановки. Примеры. 6. Спецификация программы {Q} S {R}- Слабейшее предусловие wp(S1 R) и связь между Q и wp(S1 R). Взаимосвязь между предикатами и множествами, ими задаваемыми. Понятие правильной программы. При меры. 7. Определение простейших операторов языка Ruby в терминах wp: пустой оператор, выход, последовательное соединение операторов, оператор простого и множественного присваивания. Примеры. 8. Массивы с функциональной точки зрения, понятие вырезки. Определение оператора присваивания элементу массива. Примеры. 9. Операторы и выражения. Основные управляющие конструкции и понятие об исключительных ситуациях в языке Ruby. Примеры. 10. Определение оператора IF в терминах wp. Примеры. 11. Формулировка и доказательство теоремы об операторе IF. 12. Определение оператора WHILE в терминах wp. Примеры. 13. Доказательство полноты системы связок !, V и Л для подмножества предикатов в классическом смысле без операций || и &&. 14. Правила построения отрицаний к предикатам. 1. Пусть /: {1,2,3,4,5} —> {1,2,3,4,5}. Запишите предикаты, утвер- ждающие, что существует единственный элемент ж, который / уменьшает, и отрицание этого факта; не используйте при этом квантора 3!. 2. Докажите, что выражение ((ei Л (ег V ез)) = ((ei Л e<i) V (ei Л ез))) является предикатом. 3. Пусть /: {1,2,3,4} —> {1,2,3,4}. Запишите предикаты, утверждающие, что функция / является сюръективной, и отрицание этого факта. 4. Докажите, что выражение ((aVa)) — не предикат (в строгом смысле). 5. Докажите закон эквивалентности {{е\/\{е2Уе^)) = ((eiAe2)V(eiAe3))). 6. Пусть /: {—1,2,4} —>• {—1,3,4,5}. Найдите количество всех таких функций, а затем количество непостоянных и количество сюръективных среди них. 7. Докажите закон эквивалентности ((ei||(ei&&e2)) = в\). 8. Докажите, что система связок ! и =>- для подмножества предикатов в классическом смысле без операций || и && полна. 9. Изобразите дерево вывода для предиката ((ei || (е2&&;ез)) = ((ei||e 2 )&&(ei||e 3 ))). 10. Докажите, что выражение (Зх G [0,1] х2 ^ х) Л (г + j = 3) является предикатом (в расширенном смысле). 11. Докажите, что система связок V, Л и =>- для подмножества предикатов в классическом смысле без операций || и && не является полной. 12. Запишите предикат, утверждающий, что необходимым условием равенства нулю всех элементов массива Ь[0..п — 1] является отличие от нуля ровно двух из трех целых чисел а, Ъ и с. 13. Запишите предикат, утверждающий, что достаточным условием наличия в массиве Ь[0..п — 1] нулевых элементов является либо четность целого числа а, либо нечетность хотя бы одного из целых чисел b или с. 14. Запишите предикат, утверждающий, что необходимым и достаточным условием равенства нулю всех элементов массива Ь[0..п — 1] является наличие среди первых к его элементов хотя бы одного нулевого. 15. Приведите пример предиката (в расширенном смысле), множество состояний которого совпадает с множеством всех точек плоскости, являющегося тавтологией. 16. Постройте дерево вывода для предиката ((ei Л (е2 Л е3)) = ((ei Л е2) Л 17. Вычислите и упростите wp(" i , s = l,b[0] ", 1 ^ г < п Л s = b[0] + ... + Ь[г-1]). 18. Вычислите и упростите И7^("а,п = 0,1", а2 < п Л (а + I)2 ^ п). 19. Вычислите и упростите Wj9("s=s+b[i] ; i=i+l",0 < г < п Л s = Ь[0] + ... + Ь[г-1]). 20. Вычислите wp(" if (true)", R) для произвольного предиката R. 21. Найдите выражение ж, при котором следующий предикат будет тавтологией: {г = j" + 1} "j=x;i=i+l" {г = j}. 22. Найдите и упростите wp("a. > b ? a=a-b : b=b-a",a > 0). 23. Вычислите и упростите wр("if а > b then а=Ь end", a = 6). 24. Найдите выражение ж, при котором следующий предикат будет тавтологией: {г = j' + 1} "i=i+l; j=x" {г = j}. 25. Найдите выражение ж, при котором следующий предикат будет тавтологией: {s = Ь[0] + . . . + Ь[г-1]} "s=s+x;i=i+l" {s = Ь[0] + .. . + Ь[г - 1]}. 26. Вычислите и упростите it>]9("s=s+b[i] ; i=i+l",0 < г < п Л s = Ь[0] + ... + Ь[г-1]). 27. Вычислите и упростите w;j9("a,n = 0,1", а2 < п Л (а + I)2 ^ п). 28. Найдите wp("4hile true ; end", R) для произвольного предиката R. 29. Найдите выражение ж, при котором следующий предикат будет тавтологией: {г = j} "i=i+l; j=x" {г = j — 1}. 30. Найдите и упростите wp("а <= b ? b=b-a : a=a-b",6 > 0). 31. Вычислите и упростите wp("if а != b then a=b end", a = 6). 32. Вычислите и упростите wp("if а == b then a=b end", a > 0). 33. Вычислите и упростите iu£>("b[i] = 5",6[г] = b[j]). 34. Вычислите и упростите ic£>("b[b[i]] = i", b[i] = г). 35. Опишите с помощью регулярного выражения язык, заданный грам- матикой S -> ОТ | IS; Т -+ ОТ | е. 36. Опишите с помощью регулярного выражения язык, заданный грамматикой S -> 1Г | OS | е; Т ->• ОТ | г. 37. Опишите с помощью регулярного выражения язык, заданный грамматикой S -> 1Г | IS1; Т -)- ОТ | е. 38. Задайте с помощью грамматики и опишите с помощью регулярного выражения язык над алфавитом {0,1}, состоящий из всех цепочек, начинающихся с единицы и заканчивающихся нулём. 39. Задайте с помощью грамматики и опишите с помощью регулярного выражения язык всех натуральных чисел, не меньших 79. 40. Задайте с помощью грамматики и опишите с помощью регулярного выражения язык всех натуральных чисел, записанных в шестнадцатерич-ной системе счисления. 41. Является ли предикат \/х А(х) =>■ Зу А[у) тавтологией? 42. Является ли предикат ЗуУх В(х7 у) =4> Ух 3 уВ(х7 у) тавтологией? 43. Является ли предикат \/х Зу В(х7 у) => 3 у\/х В(х,у) тавтологией? 44. Постройте отрицание к высказыванию (А Л В) =>■ \/у Зх С(ж, у). 45. Запишите предикат, утверждающий, что уравнение f(x) = 0 имеет ровно два различных корня. 46. Докажите, что предикат (\/х А(х) =>■ Зу В(у)) = (\/х\В(х) =>■ Зу \А{у) является тавтологией.