
- •0. Алгоритм и его свойства.
- •1. Почему необходимо формализовать понятие алгоритма?
- •Пример формализации – машина Поста.
- •Базовые программные конструкции и их графическое представление.
- •Определите понятие «модульное программирование».
- •Метаязыки описания языков программирования.
- •Как сравнить между собой алгоритмы сортировки, поиска?
- •Идея алгоритма быстрой сортировки.
Так, вот и наш вариант ответов
Большое спасибо Сергею Жгировскому, Андрею Малевичу, Саше Соколову, Кириллу Лашуку и остальным, кто увидел своё творчество на этих страницах.
Очень приветствуется критика этих ответов (только конструктивная ) и дополнение ответов, только чтобы не очень большое. Свои претензии и пожелания высказывайте либо в контакте (в группе), либо на асю 179590800. Если что – подправим
0. Алгоритм и его свойства.
Алгоритмом называется точная инструкция исполнителю в понятной для него форме, определяющая процесс достижения поставленной цели на основе имеющихся исходных данных за конечное число шагов. Основными свойствами алгоритмов являются: 1. Универсальность (массовость) - применимость алгоритма к различным наборам исходных данных. 2. Дискретность - процесс решения задачи по алгоритму разбит на отдельные действия. 3. Однозначность - правила и порядок выполнения действий алгоритма имеют единственное толкование. 4. Конечность - каждое из действий и весь алгоритм в целом обязательно завершаются. 5. Результативность - по завершении выполнения алгоритма обязательно получается конечный результат. 6. Выполнимость - результата алгоритма достигается за конечное число шагов.
1. Почему необходимо формализовать понятие алгоритма?
Введенного на интуитивном уровне понятия алгоритма и опытным путем установленных свойств алгоритмов вполне достаточно для решения широкого круга математических задач. Достаточно такого подхода и при решении практических задач программирования компьютеров. Однако, в тех случаях, когда задача оказывается сложной и алгоритмическое решение задачи найти не удается, встает вопрос о ее алгоритмической разрешимости. При этом требуется понятие алгоритма формализовать, т.е. четко определить исполнителя алгоритмов, с помощью которого можно провести доказательство алгоритмической неразрешимости задачи. В первой половине XX века почти параллельно было разработаны несколько подходов к формализации алгоритмов — рекурсивные функции, абстрактные машины Тьюринга и Поста, λ-исчисление, нормальные алгорифмы (так это традиционно называется в математике) Маркова, впоследствии оказавшиеся эквивалентными. Некоторые из этих подходов оказали воздействие на становление информатики и нашли отражение в производственных языках программирования — таких как Lisp (λ-исчисление), Рефал (нормальные алгорифмы Маркова). Последний язык — используется в исследованиях и разработках в области искусственного интеллекта, — кстати, чуть ли не единственный, разработанный в России и получивший мировое признание.
Пример формализации – машина Поста.
Абстрактная машина Поста представляет собой бесконечную ленту, разделенную на одинаковые клетки, каждая из которых может быть либо пустой, либо заполненной меткой «V». У машины есть головка, которая может перемещаться вдоль ленты на одну клетку вправо или влево, наносить в клетку ленты метку, если этой метки там ранее не было, стирать метку, если она была, либо проверять наличие в клетке метки. Информация о заполненных метками клетках ленты характеризует состояние ленты, которое может меняться в процессе работы машины. В каждый момент времени головка находится над одной из клеток ленты и, как говорят, обозревает ее. Информация о местоположения головки вместе с состоянием ленты характеризует состояние машины Поста. Работа машины Поста заключается в том, что головка передвигается вдоль ленты (на одну клетку за один шаг) влево или вправо, наносит или стирает метки, а также распознает, есть ли метка в клетке в соответствии с заданной программой, состоящей из отдельных команд.