- •Информатика как наука и вид практической деятельности.
- •Измерение информации.
- •Системы счисления.
- •Кодирование информации.
- •Самоконтролирующиеся коды
- •Самокорректирующиеся коды
- •Иллюстрация
- •Информационная энтропия. Формула Клода Шеннона
- •Кодирование графической информации
- •Кодирование звуковой информации
- •Алгоритмы и их свойства.
- •Алгоритм, его свойства. Формализация понятия алгоритма.
- •Всякий алгоритм может быть реализован машиной Тьюринга.
- •Пример алгоритма
- •Поиск с барьером
- •Бинарный (двоичный) поиск
- •Алгоритм
- •Сортировка методом Шелла
- •Алгоритм сортировки Шелла:
- •Системное программное обеспечение
- •Прикладное программное обеспечение
- •Принцип работы эвм рассматривается на примере персонального компьютера.
Всякий алгоритм может быть реализован машиной Тьюринга.
(Позже были другие определения, но всегда удавалось доказать, что они эквивалентны машинам Тьюринга). (Марков, Пост)
9
См. перед 8.
Пример алгоритма
Условимся, что алгоритм – это организованная последовательность действий.
Тогда правильный алгоритм:
Налить в чайник воду.
Зажечь спичку.
Открыть кран газовой горелки.
Поднести спичку к горелке.
Поставить чайник на плиту.
Ждать, пока вода закипит.
Выключить газ.
10
Анализ алгоритмов – ключ к их пониманию в степени, достаточной для эффективности их применения при решении практических задач. Существуют два основных способа анализа – проводить исчерпывающие эксперименты или предварительный математический анализ программы.
Оценка эффективности алгоритмов – трудоемкость (время выполнения программы) и требуемый объем памяти. Аналитически оценки получают на основе подсчета базовых операций сравнения и обмена. Как правило, эти операции сосредоточены во внутренних циклах алгоритма.
Алгоритм, в конечном счете, выполняется в машинной системе со специфическим набором команд и периферийными устройствами. Для отдельной системы какой-либо алгоритм может быть разработан для полного использования преимуществ данного компьютера и поэтому достигает высокой степени эффективности. Критерий, называемый системной эффективностью (sys-tem efficiency), сравнивает скорость выполнения двух или более алгоритмов, которые разработаны для выполнения одной и той же задачи. Выполняя эти алгоритмы на одном компьютере с одними и теми же наборами данных, мы можем определить относительное время, используя внутренние системные часы. Оценка времени становится мерой системной эффективности для каждого из алгоритмов.
При работе с некоторыми алгоритмами могут стать проблемой ограничения памяти. Процесс может потребовать большого временного хранения, ограничивающего размер первоначального набора данных, или вызвать требующую времени дисковую подкачку. Эффективность пространства (space efficiency) — это мера относительного количества внутренней памяти, используемой каким-либо алгоритмом. Она может указать, какого типа компьютер способен выполнять этот алгоритм и полную системную эффективность алгоритма. Вследствие увеличения объема памяти в новых системах, анализ пространственной эффективности становится менее важным.
Третий критерий эффективности рассматривает внутреннюю структуру алгоритма, анализируя его разработку, включая количество тестов сравнения итераций и операторов присваивания, используемых алгоритмом. Эти типы измерений являются независимыми от какой-либо отдельной машинной системы. Критерий измеряет вычислительную сложность алгоритма относительно n, количества элементов данных в коллекции. Мы называем эти критерии вычислительной эффективностью (computational efficiency) алгоритма и разрабатываем нотацию Big-О для построения измерений, являющихся функциями n.
11
Линейный, последовательный поиск — алгоритм нахождения заданного значения произвольной функции на некотором отрезке. Данный алгоритм является простейшим алгоритмом поиска и в отличие, например, от двоичного поиска, не накладывает никаких ограничений на функцию и имеет простейшую реализацию. Поиск значения функции осуществляется простым сравнением очередного рассматриваемого значения (как правило поиск происходит слева направо, то есть от меньших значений аргумента к большим) и, если значения совпадают (с той или иной точностью), то поиск считается завершённым.
Если отрезок имеет
длину N, то найти решение с точностью до
можно
за время
.
Т.о. асимптотическая сложность алгоритма —
.
В связи с малой эффективностью по
сравнению с другими алгоритмами линейный
поиск обычно используют только если
отрезок поиска содержит очень мало
элементов, тем не менее линейный поиск
не требует дополнительной памяти или
обработки/анализа функции, так что может
работать в потоковом режиме при
непосредственном получении данных из
любого источника. Так же, линейный поиск
часто используется в виде линейных
алгоритмов поиска максимума/минимума.
Последовательный (линейный) поиск – это простейший вид поиска заданного элемента на некотором множестве, осуществляемый путем последовательного сравнения очередного рассматриваемого значения с искомым до тех пор, пока эти значения не совпадут.
Идея этого метода заключается в следующем. Множество элементов просматривается последовательно в некотором порядке, гарантирующем, что будут просмотрены все элементы множества (например, слева направо). Если в ходе просмотра множества будет найден искомый элемент, просмотр прекращается с положительным результатом; если же будет просмотрено все множество, а элемент не будет найден, алгоритм должен выдать отрицательный результат.
Недостатком рассматриваемого алгоритма поиска является то, что в худшем случае осуществляется просмотр всего массива. Поэтому данный алгоритм используется, если множество содержит небольшое количество элементов.
Достоинства последовательного поиска заключаются в том, что он прост в реализации, не требует сортировки значений множества, дополнительной памяти и дополнительного анализа функций. Следовательно, может работать в потоковом режиме при непосредственном получении данных из любого источника.
