- •1. Структурная схема микропроцессора (на примере i8086). Назначение регистров.
- •3. Организация основной памяти.
- •3. Структура и характеристики оперативной памяти
- •4. Модель osi
- •5. Стек протоколов tcp/ip
- •6. Классификация компьютерных сетей
- •7. Данные и модели данных
- •8. Модель данных «сущность-связь»
- •Ограничения целостности
- •9. Реляционная модель данных
- •10. Основные направления исследования в области ии
- •11. Метод резолюции в лппп.
- •12. Продукционная модель
- •13. Основные парадигмы языков программирования.
- •14. Основные понятия ооп: инкапсуляция, наследование, полиморфизм
- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследование
- •15. Понятие алгоритма.
- •16. Понятие о временной и емкостной сложности алгоритма
- •17. Машина Тьюринга: детерминированная и недетерминированная
- •18. Понятие формального языка и формальной грамматики
- •19. Основные понятия теории графов.
- •20. Понятие количества информации и энтропии. Теорема Шеннона.
- •21. Деревья в теории графов.
- •22. Модели линейного программирования (постановка задачи, математическая модель, решение графическим методом).
- •23. Двойственность в задачах линейного программирования.
- •25. Элементы теории игр.
- •2. Подпрограммы. Процедуры и функции
- •3. Массивы
- •4. Записи
- •5. Работа с Динамическими данными
- •6. Динамические структуры данных. Линейные списки.
- •7. Динамические структуры данных: двоичные деревья
- •8. Работа с файлами
- •9.Операции целочисленной арифметики
- •10. Системы счисления. Перевод чисел из одной системы счисления в другую
- •11. Язык sql. Назначение и основные команды.
- •Манипулирование данными
- •Простые запросы
- •12. Алгоритмы внутренней сортировки.
- •13. Алгоритмы внешней сортировки
- •14. Нахождение кратчайших путей в графе
- •15. Поиск в ширину
- •16. Поиск остова и минимального остова.
- •17. Линейная модель работы информационно-поисковой системы.
- •18. Хеширование
- •Основные достоинства в-дерева
- •20. Логические вопросно-ответные системы:выполнение запросов различных типов.
- •21. Поиск в семантической сети.
- •22. Принципы динамического программирования. Иллюстрация на примере.
- •23. Адресация в Интернете
- •Доменные имена
- •Общий вид формата url-адреса
- •Как работает dns-сервер
- •24. Основные сервисы в сети Интернет.
- •Word Wide Web (www) - "Всемирная паутина"
- •Поиск информации в сети
- •VoIp сервис
- •Мессенджеры
- •25. Использование html. Структура Web(html) страницы.
13. Алгоритмы внешней сортировки
Под внешней сортировкой понимается сортировка файлов.
Пример: 7 2 8 4 5 9 1 13 ← есть файл, можно отсортировать. Сводится к некоторым вариантам слияния.
Прямое слияние (сбалансированное):
Считаем, что данные состоят из серий длины 1. теперь имея ленты 3 и 4 начинаем сливать на них данные. Считаем, что ленты 1 и 2 пустые и сливаем III и IV.
Н а первом шаге d = 1 20
d = 2 21
… K
n 2k
Число проходов имеет порядок ~ logn
Суммарная длина = n => T ~ n logn
Алгоритмы слияния:
5 7 9 11 n = 4
1 3 4 5 8 m = 5
Сравниваем на первом шаге 2 первых элемента, меньший из них ставиться на первое место.
T ~ n+m (сравнений)
Вирт – естественное слияние (несбалансированное). Выделяем максимальные серии
СЛИВАЕМ
T ~ n logn
(но немного быстрее работает на 10-15%)
Далее началась изучаться и образовываться теория слияния:
-двух путевое слияние (данные распределены на любых шаге на 2 ленты)
- и т.д.
Также слияние может быть:
- сбалансированным (характеризует одинаковую длину серий на одной фазе слияния).
- несбалансированным (естественное слияние).
В несбалансированности скрывается улучшение слияния.
Многофазная (Фибоначиева) сортировка
Здесь фаз больше, но не все элементы просматриваем => фазы не все трудоемки.
Длины серий количество серий
1 1 5 3
2 1 3 2
3 2 2 1
5 3 1 1
0 1 1 2 3 5 8 13…
U0 U1 U2 U3 U4
Длины серий по прямому закону Фибоначчи количество серий по обратному закону Фибоначчи.
При n → ∞ приближается к геометрической прогрессии.
Существует
При n → ∞
По последовательности Фибоначчи:
{* }
2= +1
2- -1=0
D = 5
=>
золотое сечение
=> nn
14. Нахождение кратчайших путей в графе
Входные данные:
Граф G со взвешенными ребрами (подвесами можно понимать длины ребер, если речь идет о геометрическом графе, или любые другие числовые характеристики ребер}. Пусть L(i,j) — вес ребра (i, j).
Стартовая вершина s (вершина, от которой вычисляются расстояния до всех остальных вершин).
Выходные данные:
Массив dist[1...n], (dist[i] — кратчайшее расстояние от вершины s до вершины i).
Массив uр[1... n], (uр[i] — предпоследняя вершина в кратчайшем пути из вершины s в вершину i).
Приводимый ниже алгоритм Дейкстры корректно решает задачу для графов с неотрицательными весами вершин. Если же в графе есть ребра с отрицательными весами, но нет циклов с отрицательным суммарным весом, то для решения задачи можно использовать алгоритм Форда, Беллмана.
Алгоритм Дейкстры
Заполнить массив up [1. ..n] нулями.
Каждой вершине i приписать в качестве ключа dist[i] — максимально возможное число (оно должно быть больше, чем длина наибольшего из кратчайших путей в графе; в процессе вычислений это число будет уменьшаться и в итоге заменится на длину кратчайшего пути из вершины s в вершину i).
Организовать приоритетную очередь из вершин графа, взяв в качестве ключей величины dist[i], где i=1,2,…,n.
Заменить ключ вершины s на 0.
Пока очередь не пуста, выполнять операции 6,7.
Выбрать (с удалением) из приоритетной очереди элемент r0 с минимальным ключом.
Для каждой вершины r, смежной с r0, выполнить операции 8,9.
Вычислить величину delta=dist[r] - (dist[r0 ]+ L(r0,r)).
Если delta > 0, то уменьшить ключ dist[r] элемента r на величину delta и заменить старое значение величины up [r] на r0.
Алгоритм Дейкстры
Допустим, на некотором шаге описанного выше алгоритма построено дерево с множеством вершин А, а для каждой вершины у известна вершина х0 = F(y), на которой достигается наименьшее значение величины , где минимум берется по всем вершинам х А. Тогда на этом шаге следует выбрать вершит y с наименьшим значением величины и присоединить к дереву ребро (F(y),y). После этого для каждой вершины z, еще не принадлежащей к дереву, значения и F(z) уточняются следующим образом; если , то следует положить F(z)= . Вершина F(y) может рассматриваться как предполагаемый отец вершины у в геодезическом дереве (если все множество состояло бы из одной вершины у, то F(y) была бы ее истинным отцом). Величина (у) представляет собой оценку кратчайшего пути из a в у, она равна весу кратчайшего из путей, проходящих только через вершины множества А. После того, как вершина у присоединяется к дереву, значения F(y) и (у) больше не изменяются, F(y) является отцом вершины у в геодезическом дереве, а (у) = (у). В целом алгоритм можно представить следующим образом:
Алгоритм Дейкстры
ВХОД – С – матрица весов графа; s – вершина, называемая источником
ВЫХОД – D – массив, D[i] – расстояние от s до i.
L – массив, L[i] – направление оптимального пути от вершины i к s.
Алгоритм.
for i:=1 to n do D[i]:=C[s,i]; // первоначальное заполнение массива расстояний
for i:=1 to n do L[i]:=s;
D[s]:=0; // расстояние от вершины s до s-0
for i:=1 to n do lab [i]:=false; lab[s]:=true; // помечаем все вершины кроме s, как непросм.
for i:=1 to n-1 do begin // повторить n-1 раз (чтобы просмотреть все вершины, кроме s)
jmin:=1;
while lab[j] do begin // ищем непросмотренную вершину
j:=jmin;
while (j<=n) do begin // ищем ближайшую к s непросмотренную вершину
if (not lab[j]) and (D[j]<D[jmin]) then jmin:=j;
inc(j)
end;
lab[jmin]:=true; //помечаем ее
for j:=1 to n do if not lab[j] then begin // цикл по непросмотренным вершинам
if (D[jmin] +C[j,jmin])<D[j] then begin // проверяем можно ли сократить путь, пройдя через jmin
D[j]:=D[jmin]+ C[j,jmin]; // идем от j к s через вершину jmin
L[j]:=jmin // оптимальное направление от j к s – двигаться к jmin
end end end
1.
S=6 (источник) 1 2 3 4 5 6*
D – массив расстояния D 1 4 0
L – массив направления L 6 6 6 6 6 6
С[i,S] или C[S,i]
Ищем ближайшую к 6 по D непросмотренную: - 4
1 2 3 4* 5 6*
D 12 6 1 2 0
L 6 4 4 6 4 6
Ближ. непросм.: - 5 ближ. непросм.: - 3
1 2 3 4* 5* 6* 1 2 3* 4* 5* 6*
D 12 4 1 2 0 D 7 4 1 2 0
L 6 4 5 6 4 6 L 6 3 5 6 4 6
ближ. непросм.: - 2 ближ. непросм.: -1
1 2* 3* 4* 5* 6* 1* 2* 3* 4* 5* 6*
D 7 4 1 2 0 D 7 4 1 2 0
L 6 3 5 6 4 6 L 6 3 5 6 4 6