- •Передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
- •Области действия имён; (область видимости переменной).
- •Достоинства:
- •Представление целых чисел в эвм
- •Основные типы данных, операции над ними.
- •Операции
- •Преобразование типов
- •Особенности операций для вещественных чисел
- •3.1. Операторы и блоки.
- •3.2. Оператор if – else
- •3.3. Конструкция else-if.
- •3.4. Оператор switch
- •3.5. Циклы while и for
- •3.6. Цикл do-while
- •3.7. Операторы break и continue
- •3.8. Оператор goto и метки
- •3.9. Оператор return
- •Инвариант
- •Указатели
- •Массивы
- •Связь между указателями и массивами
- •Представление в эвм
- •Создание указателя на массив
- •Инициализация массивов
- •Операции над указателями
- •Замечание! 2 указателя нельзя суммировать, но можно прибавлять константу. Сравнивать допустимо только с указателями того же типа или с null
- •Метод барьера в линейном поиске
- •Метод барьера при быстрой сортировке массива
- •Сортировка методом вставки. В отсортированной части массива последний элемент – барьер.
- •Процедуры
- •Локальные и глобальные переменные
- •Локальные переменные
- •Глобальные переменные
- •Средний и наихудший случай
- •Дополнительно (то же самое)
- •Анализ эффективности алгоритмов не должен зависеть от:
- •Временная сложность алгоритма
- •Некоторые свойства временной сложности алгоритма (функции f(n) )
- •Характеристики рекурсии
- •Виды рекурсии
- •Когда не нужно применять рекурсию
- •Применение эвристик.
- •Метод ветвей и границ (доп. Из Wikipedia)
- •Алгоритм Неймана.
- •Линейный конгруэнтный метод
- •Выбор параметров, выбор модуля и множителя.
- •Сдвиг на несколько символов: Если не совпадает , то сдвигаем образ вправо до последнего его стоп-символа. Если «стоп-символа» вообще нет в образе, то образ смещается за этот символ.
- •Вопросы на экзамен по информатике:
- •Перевести отрицательное целое число (он любое может назвать) в дополнительный код.
- •Есть ли смысл применять метод барьера в поиске подстроки в строке?
- •Задачи на экзамене:
- •Задача о Ханойских башнях
- •Бинарный поиск элемента в массиве
- •Сумма цифр в числе
- •Число различных элементов в символьном массиве
- •Сгенерировать все перестановки в целочисленном массиве (Билет 1).
- •Функция, возвращающая I и j такие, чтобы сумма эл-тов в I-ой строке равнялась сумме в j-ом столбце.
- •Есть одномерный массив целых чисел и нужно построить функцию, получающую на вход вещественное число X и возвращающую индекс элемента, который ближе всего к этому числу.
- •Функция strcpy (char *s1, char *s2) , билет 12.
- •Реализация strcat(); Билет 7.
- •Билет 5. Функция, выдаёт частное и остаток от деления X на y, нельзя пользоваться / и % .
- •Метод генерации случайной перестановки ( Тасование Фишера-Йетса).(не ок)
Алгоритм Неймана.
В 1946 году, так называемый метод «середины квадрата». Предыдущее число возводится в квадрат, а из результата извлекаются средние цифры. 10-разрядное число, возводится в квадрат, и из него берется средняя часть длиной в 10 разрядов. Плох тем, что рано или поздно вырождается – в средней части оказываются одни 0. Такая последовательность не случайная, но выглядит как случайная, неплохо перемешивает предыдущее число.
Исследования метода середины квадрата проводил Метрополис, один из первых в методе «Монте – Карло», как и Нейман. Он показал на примере 20-разрядных двоичных чисел, что есть 13 циклов, в который могут превратиться последовательности, длина периода самого большего равна 142.
Алгоритм Д. Кнута.
С его помощью данное 10-е число можно преобразовать в другое. Рассматривая шаги алгоритма, видим, что случайное число будет вычисляться случайное число раз, выполняется случайно выбранный шаг программы, так же используется середина квадрата. Он оказался плох тем, что через некоторый период значения стали повторяться
Вывод Кнута: случайные числа нельзя вырабатывать с помощью случайно выбранного алгоритма.
Любой ГПСЧ с ограниченными ресурсами рано или поздно зацикливается — начинает повторять одну и ту же последовательность чисел. Длина циклов ГПСЧ зависит от самого генератора и в среднем составляет около 2n/2, где n — размер внутреннего состояния в битах, хотя линейный конгруэнтный обладает максимальным циклом порядка 2n. Если порождаемая ГПСЧ последовательность сходится к слишком коротким циклам, то такой ГПСЧ становится предсказуемым и непригодным для практических приложений.
Основные недостатки простых арифметических генераторов:
Слишком короткий период.
Последовательные значения не являются независимыми.
Некоторые биты «менее случайны», чем другие.
Линейный конгруэнтный метод
(к -соразмерный, соответствующий)
Предложен Дерриком Лемером в 1948, один из алгоритмов генерации псевдослучайных чисел. Применяется в простых случаях и не обладает криптографической стойкостью (способность противостоять возможным атакам). Входит в стандартные библиотеки различных компиляторов. Линейный конгруэнтный метод заключается вычислении членов линейной рекуррентной ( каждый член выражается через предыдущие члены) последовательности по модулю некоторого натурального числа m, задаваемой следующей формулой:
где a - множитель, a>=0, X0 - начальное значение >=0, с – приращение >=0, m модуль ( m>X0, m>a, m>c).
Частным случаем является с=0, что и было принято в первоначальном методе Лемера, когда процесс выработки происходит быстрее, но это уменьшает длину периода последовательности. Возможно употребление термина «мультипликативный» км для с=0 и смешанный км для с не равно 0.
Получаемая последовательность зависит от выбора стартового числа X0 и при разных его значениях получаются различные последовательности случайных чисел. В то же время, многие свойства этой последовательности определяются выбором коэффициентов в формуле и не зависят от выбора стартового числа.
Характеристики ЛКГ:
Период генератора (количество чисел, которое можно получить случайно). Конгруэнтные последовательности всегда зацикливаются. Повторяющийся цикл называется периодом. Период – min k | x(n+k) = xn для любого n.
Разброс генератора. Хороший разброс, если все числа из некоторого диапазона (а,в) появляются с одинаковой вероятностью для любых а, в.
Мощность Нельзя получить период, больший, чем m. (0 … m-1). Мощность - такое наименьшее целое число s, что
Такое s
всегда существует, когда выполняются
условия теоремы
1. Показывает,
есть ли линейная зависимость между
соседними членами последовательности.
Когда она маленькая, видно, что есть
связь, поэтому S
5.
Чтобы мощеость большая, нужно избегать
слишком простого по виду набора цифрю
Пример последовательности 769079690… х0=а=с=7, м=10. Последовательность чисел, порождаемая линейным конгруэнтным методом, периодична с периодом, не превышающим m.
