
- •1.(30) Основные понятия мЛиТа
- •2. История развития теории алгоритмов.
- •3. Роль алгоритма в науке и технике.
- •4. Понятие алгоритма.
- •5. Алгоритмический процесс.
- •6. Основные вопросы теории алгоритмов.
- •7. Классификация алгоритмов.
- •8. Свойства алгоритмов.
- •9. Понятие предиката
- •10. Интерпретация. Модель
- •12. Нормальные алгорифмы Маркова.
- •13. Гипотеза Черча.
- •14. Машина Тьюринга.
- •15. Рекурсивные функции.
- •2) Тождественные функции любого числа независимых
- •16. Алгоритмически неразрешимые проблемы
- •17. Понятие о сложности
- •18. Временная и вычислительная сложность алгоритмов.
- •19. Понятие р- и np-задач.
- •21. Темпоральные логики. Нечеткая и модальные логики.
- •22. Примеры задач np-класса.
- •24. Дедуктивные теории
- •25. Свойства дедуктивных теорий
- •26. Формальные аксиоматические теории
- •27. Свойства выводимости
- •31.(38) Логические функции
- •34. Кванторы
- •39. Алгоритм Сортировка слиянием.
- •40. Алгоритм Пузырьковая сортировка.
- •41. Алгоритм Сортировка вставками.
- •42. Алгоритм Сортировка Шейкером.
- •43. Алгоритм Быстрая сортировка.
- •44. Алгоритм Сортировка подсчетом.
- •47. Логика высказываний.
- •48. Булева алгебра и основные логические тождества.
- •49. Пропозициональные буквы, связки и формы (формулы логики
- •50. Исчисление высказываний (теория l)
44. Алгоритм Сортировка подсчетом.
Этот метод подходит для сортировки целых чисел из не очень большого
диапазона (сравнимого с размером массива). Идея вот в чем: для каждого
элемента найти, сколько элементов, меньших определенного числа, и
поместить это число на соответствующие место. Делается это так: за
линейный проход по массиву мы для каждого из возможных значений
подсчитываем, сколько элементов имеют такое значение. Потом добавляем к
каждому из найденных чисел суму всех предыдущих. Получая, таким
образом, сколько есть элементов, значения которых не больше данного
значения. Далее, опять-таки за линейный проход, формируем из исходного
массива новый отсортированный. При этом следим, чтобы два одинаковых
элемента не были записаны в одно место. Этот простой метод не использует
вложенных циклов и, учитывая небольшой диапазон значений, время его
работы есть O(n). Рассмотрев такое количество сортировок, можно
задуматься: а будет ли результат их работы одинаковым? Странный вопрос,
ведь все сортировки правильно сортируют данные, так почему же результат
работы может быть разным? Хорошо, объясню: меньшие элементы всегда
расположены перед большими, но порядок одинаковых элементов может
быть нарушен. Если мы сортируем данные, которые состоят из одного ключа,
то мы, конечно, не заметим разницы. Но если к ключу прилагается
дополнительная информация, то одна сортировка может вернуть нам 1977
"Иванов" и 1977 "Сидоров", а другая -1977 "Сидоров" и 1977 "Иванов". Значит,
порядок одинаковых элементов может в процессе сортировки стать другим.
Правда, это бывает далеко не всегда и не в каждой сортировке. В
сортировках вставками, пузырьком, подсчетом и слиянием порядок элементов
с одинаковыми ключами всегда такой же, как и в изначальном массиве. Такие
сортировки называются устойчивыми, и сейчас я познакомлю вас с
улучшенной сортировкой подсчетом, которая позволяет сортировать числа
большего диапазона, используя другую устойчивую сортировку.
Program CountingSort;
Var A,B : array[1..1000] of byte;
C : array[byte] of integer;
N,i : integer;
Begin {Определение размера массива A (N) и его заполнение}
…{сортировка данных}
for i:=0 to 255 do
C[i]:=0;
for i:=1 to N do
C[A[i]]:=C[A[i]]+1;
for i:=1 to 255 do
C[i]:=C[i-1]+C[i];
for i:=N downto 1 do
begin
B[C[A[i]]]:=A[i];
C[A[i]]:=C[A[i]]-1; {здесь мы избегаем возможности записи двух одинаковых
чисел в одну ячейку}
end;
54
{Вывод массива B} …End.
55
47. Логика высказываний.
Высказыванием называется любое повествовательное предложение, которое
истинно либо ложно.
Примерами высказываний в математической логике являются следующие
предложения:
Сократ - человек.
2 + 2=4.
5 > 7.
Не являются высказываниями в математической логике предложения:
х > 5 (здесь х∈(-∞ , ∞ ) и считается переменной).
Закройте книгу!
Данное предложение ложно.
Какое же у меня есть дело на земле?
Высказывания будем обозначать заглавными печатными латинскими буквами
(А, B, С,...) и этими же буквами с числовыми индексами.
В логике высказываний отвлекаются от содержания высказывания и
интересуются истинностью либо ложностью (истинностными значениями)
высказывания.
Таким образом, высказывание рассматривается как величина, которая может
принимать два значения: «истина» либо «ложь». В дальнейшем для краткости
будем обозначать значение «истина» через И, а «ложь» - Л. Если
1 По Синодальному изданию; по Восстановительному переводу эта фраза
имеет вид: «Ибо мы не можем делать что либо против истины, а можем ради
истины». Выделение слов здесь и в эпиграфе сделано согласно указанным
источникам. высказывание А истинное, то будем говорить, что А принимает
значение И (истина), и писать: А = И. Если высказывание А ложное, то будем
говорить, что А принимает значение Л (ложь), и писать: А = Л. Заметим, что
мы не будем определять, что такое истина и что такое ложь, но считаем себя
способными охарактеризовать некоторые высказывания как истинные, другие
- как ложные.
Из высказываний можно образовывать другие высказывания, соединяя их
различными способами, т.е. производя операции над высказываниями. Эти
логические операции над высказываниями таковы, что истинностные
значения составных высказываний определяются только истинностными
значениями составляющих высказываний, а не их содержательным смыслом.
56