38. Проанализируйте хеш-таблицу как структуру данных.
Хеширование — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем или хеш-кодом. Хеш-таблица — это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу. (с) Выполнение операции в хеш-таблице начинается с вычисления хеш-функции от ключа.
Хорошая хеш-функция должна (приближенно) удовлетворять предположениям равномерного хеширования: для очередного ключа все m хеш-значений должны быть равновероятны. Заметим, что иногда желательно, чтобы хеш-функция удовлетворяла условиям, выходящим за пределы требования равномерного хеширования. Например, можно стараться, чтобы «близким» в каком-либо смысле ключам соответствовали «далёкие» хеш-значения. Обычно предполагают, что область определения хеш-функции (ключи) — множество целых неотрицательных чисел. Если ключи не являются натуральными числами, их обычно можно преобразовать к такому виду (хотя числа могут получиться большими).
Деление с остатком. Построение хеш-функции методом деления с остатком (division method) состоит в том, что ключу k ставится в соответствие остаток от деления k на m, где m— число возможных хеш-значений:h(k) = k mod m
Умножение. Построение хеш-функции методом умножения (multiplication method) состоит в следующем. Пусть количество хеш-значений равно m. Зафиксируем константу А в интервале 0 < А < 1, и положим h(k) = [m(kAmod 1)]где (k A mod 1)—дробная часть kА.
Универсальное хеширование. Если недоброжелатель будет специально подбирать данные для хеширования, то (зная функцию h) он может устроить так, что все m ключей будут соответствовать одной позиции в таблице, в результате чего время поиска будет равно O(m). Основная идея универсального хеширования — выбирать хеш-функцию во время исполнения программы случайным образом из некоторого множества.
Ситуация, когда для различных ключей получается одно и то же хеш-значение, называется коллизией.
Сама идея открытого хэширования очень проста: связать все элементы с одним и тем же значением хэш-функции во вспомогательный линейный список. Каждая ячейка массива H является указателем на связный список (цепочку) пар ключ-значение, соответствующих одному и тому же хеш-значению ключа. Коллизии просто приводят к тому, что появляются цепочки длиной более одного элемента. Операции поиска или удаления элемента требуют просмотра всех элементов соответствующей ему цепочки, чтобы найти в ней элемент с заданным ключом. Для добавления элемента нужно добавить элемент в конец или начало соответствующего списка, и, в случае если коэффициент заполнения станет слишком велик, увеличить размер массива H и перестроить таблицу.
При закрытом (внутреннем) хешировании в хеш-таблице хранятся непосредственно сами элементы, а не заголовки списков элементов. Поэтому в каждой записи (сегменте) может храниться только один элемент. При закрытом хешировании применяется методика повторного хеширования. Если осуществляется попытка поместить элемент х в сегмент с номером h(x), который уже занят другим элементом (такая ситуация называется коллизией), то в соответствии с методикой повторного хеширования выбирается последовательность других номеров сегментов h1(x), h2(x), ..., куда можно поместить элемент х. Последовательность, в которой просматриваются ячейки хеш-таблицы, называется последовательностью проб. Каждое из этих местоположений последовательно проверяется, пока не будет найдено свободное. Если свободных сегментов нет, то, следовательно, таблица заполнена, и элемент х добавить нельзя.
39. Охарактеризуйте линейные динамические структуры данных.
Список — это абстрактный тип данных, представляющий собой упорядоченный набор значений, в котором некоторое значение может встречаться более одного раза. Экземпляр списка является компьютерной реализацией математического понятия конечной последовательности — кортежа. Экземпляры значений, находящихся в списке, называются элементами списка. если значение встречается несколько раз, каждое вхождение считается отдельным элементом. Линейный связный список – здесь ссылка в каждом узле указывает на следующий узел в списке. В односвязном списке можно передвигаться только в сторону конца списка. Узнать адрес предыдущего элемента, опираясь на содержимое текущего узла, невозможно. Двунаправленный связный список – здесь ссылки в каждом узле указывают на предыдущий и на последующий узел в списке. По двусвязному списку можно передвигаться в любом направлении — как к началу, так и к концу. В этом списке проще производить удаление и перестановку элементов, так как всегда известны адреса тех элементов списка, указатели которых направлены на изменяемый элемент.
Кольцевой связный список – разновидностью связных списков является кольцевой (циклический, замкнутый) список. Он тоже может быть односвязным или двусвязным. Последний элемент кольцевого списка содержит указатель на первый, а первый (в случае двусвязного списка) — на последний.
Стек – структура данных, представляющая из себя список элементов, организованных по принципу LIFO («последним пришёл — первым вышел»).
Очередь — информационная структура, в которой для добавления элементов доступен только один конец, называемый хвостом, а для удаления — другой, называемый головой.
Хеш-таблица – это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу. Хеш-таблица содержит некоторый массив , элементы которого есть пары. Выполнение операции в хеш-таблице начинается с вычисления хеш-функции от ключа. Получающееся хеш-начение играет роль индекса в массиве . Затем выполняемая операция (добавление, удаление или поиск) перенаправляется объекту, который хранится в соответствующей ячейке массива .
Ситуация, когда для различных ключей получается одно и то же хеш-значение, называется коллизией. В связи с этим механизм разрешения коллизий — важная составляющая любой хеш-таблицы. Хеш-таблицы, использующие подобные хеш-функции, не нуждаются в механизме разрешения коллизий, и называются хеш-таблицами с прямой адресацией.
Число хранимых элементов, делённое на размер массива (число возможных значений хеш-функции), называется коэффициентом заполнения хеш-таблицы (load factor) и является важным параметром, от которого зависит среднее время выполнения операций.
Важное свойство хеш-таблиц состоит в том, что, при некоторых разумных допущениях, все три операции (поиск, вставка, удаление элементов) в среднем выполняются за время . Но при этом не гарантируется, что время выполнения отдельной операции мало. Это связано с тем, что при достижении некоторого значения коэффициента заполнения необходимо осуществлять перестройку индекса хеш-таблицы: увеличить значение размера массива и заново добавить в пустую хеш-таблицу все пары.
- 1. Рассмотрите процесс конструирования программ в императивных языках программирования
- Int cena;
- 5. Объектно-ориентированный анализ и объектно-ориентированное проектирование.
- 6. Объясните основные архитектурные особенности ос Windows xp/Vista
- 7. Классифицируйте операционные системы.
- 8. Объясните архитектурные особенности операционной системы Unix.
- 9. Проанализируйте структурную схему персонального компьютера, архитектурные свойства и принципы микропроцессоров.
- 10. Классифицируйте режимы работы микропроцессора. Объясните организацию оперативной памяти и систему прерываний.
- 11. Охарактеризуйте становление веб-программирования в историческом и технологическом аспекте.
- 12. Проанализируйте основные подходы к верстке веб-страниц.
- 13. Объясните принципы декларативного стиля программирования.
- 14. Проанализируйте задачи искусственного интеллекта.
- 15. Охарактеризуйте архитектуру платформы Microsoft .Net
- 16. Поясните ключевые концепции объектно-ориентированного языка программирования c#
- 17. Проанализируйте процесс создания Windows-приложений средствами Visual с#.
- 18. Проанализ. Процесс автоматизации проектирования по. Методы и ср-ва структурн. Системн. Анализа и проектир.
- 19. Проанализируйте процесс моделирования сложных систем и формальные средства представления моделей.
- 20. Охарактеризуйте назначение, принципы организации и классификацию компьютерных сетей и систем.
- 21. Объясните назначение, структуру и реализацию моделей сетевого взаимодействия открытых систем
- 22. Проанализируйте структуру, область применения и реализацию стека протоколов tcp/ip.
- 23. Объясните назначение, задачи и способы построения мультисервисных компьютерных сетей.
- 24. Объясните организацию межсетевого взаимод. И глоб. Сети Интернет.
- 25. Проанализируйте организацию корпоративных инф-ормац.-коммуникац. Инфраструктур на основе каталога Microsoft Active Directory.
- 26. Проанализируйте понятие базы данных, методы и средства создания моделей данных.
- 27. Охарактеризуйте основные аспекты реляционной модели данных. Продемонстрируйте использование методологии проектирования реляционных баз данных. Особенности реляционной модели данных.
- 28. Язык sql: назначение, возможности, типы команд.
- 29. Проанализируйте различные подходы к защите баз данных. Охарактеризуйте компьютерные и некомпьютерные средства контроля данных.
- 31. Охарактеризуйте многомерную модель данных. Продемонстрируйте метод многомерного моделирования для проектирования хранилищ данных.
- 32. Охарактеризуйте технологии olap. Объясните концепцию кубов данных и методы их построения с использованием современных систем.
- 33. Объясните понятие «многомерное выражение». Сформулируйте основные подходы к построению запросов к многомерным базам данных
- 34. Объясните основные этапы визуализации 3d геометрических моделей.
- 36. Объясните основы машинной графики.
- 37. Проанализируйте структуру системы сертификации программного обеспечения
- 38. Проанализируйте хеш-таблицу как структуру данных.
- 40.Охарактеризуйте объектную модель Java
- 41. Проанализируйте стандартные библиотеки Java Development Kit.
- 42. Объясните понятие межсетевого экрана и охарактеризуйте возможности использования.
- 43. Охарактеризуйте общие подходы к защите информации в ос
- 44. Охарактеризуйте основополагающие концепции теории информации. Дайте понятие количественной меры информации.
- 45.Объясните понятие сжатия информации. Проанализируйте классические алгоритмы сжатия.
- 46. Объясните процесс шифрования информации. Проанализируйте алгоритмы симметричного и ассиметричного шифрования.
- 47. Объясните понятие дефекта в по. Логика построения отчёта об ошибке
- 30. Объясните понятие бизнес-анализа, общие подходы к организации и созданию систем, предназначенных для хранения и анализа корпоративных данных.