- •1. Нарисуйте и опишите структуру главного окна системы Delphi. Для чего нужно окно инспектора объектов и как им пользоваться?
- •2. Объясните назначение окна формы. Как на нём размещать компоненты и настраивать их параметры?
- •4. Что собой представляет программа решения задачи в системе Delphi? Как организуются процедуры обработки событий: «щелчок мыши на кнопке», «создание формы»?
- •8. Как запустить программу? Как работать с программой? Как остановить программу для её редактирования?
- •9. Какие файлы содержит программа, их структура? Как организовать запись программы в отдельный каталог? Как создать новый каталог?
- •12. Приведите примеры схем циклических алгоритмов и их программ с использованием оператора repeat.
- •13. Приведите примеры схем циклических алгоритмов и их программ с использованием оператора while.
- •14.Приведите примеры схем циклических алгоритмов и их программ с использованием оператора for.
- •15. Как организуется работа с массивами в языке Pascal: описание, обращение к элементам, операции над массивами? Проиллюстрируйте на примерах.
- •16. Понятия статического и динамического распределения памяти. Что такое указатель? Операции над указателями. Что такое динамическая переменная? Наложение переменных с помощью указателя.
- •17. Понятие множеств в языке Pascal. Как они описываются? Какие операции над ними допустимы? Привести примеры их полезного использования.
- •18. Что такое строки в языке Pascal? Как они описываются, что такое текущая и максимальная длина строки? Опишите процедуры и функции обработки строк.
- •23. Как выводить графики в Delphi, используя компоненту tImage. Опишите последовательность действий по настройке tImage и фрагмент программы вывода закрашенного квадрата внутри круга.
- •24. Что такое записи в языке Pascal? Как они описываются, в чем особенность вариантной части?
- •25.Понятие объекта и класса. Объясните на примерах, что такое инкапсуляция наследственность и полиморфизм, раннее и позднее связывание
- •26. Что такое виртуальный и динамический способы реализации полиморфизма. В чем их различие. Понятие абстрактного метода. Как реализуется вызов родительского метода в методе потомке?
- •27.Назначение конструктора и деструктора. Приведите примеры их описаний. Их вид в Delphi
- •28.Понятие свойств класса, для чего они нужны? Как они описываются? Приведите примеры классов со свойствами
- •29. Постановка задачи оптимального выбора. Двоичное дерево решений. Метод полного перебора, метод ветвей и границ эвристические методы.
29. Постановка задачи оптимального выбора. Двоичное дерево решений. Метод полного перебора, метод ветвей и границ эвристические методы.
Много важных прикладных задач (в частности задач искусственного интеллекта) можно свести к следующей:
Имеется набор из n элементов a1...an. Каждый элемент ai характеризуется определенными свойствами, например, вес wi и цена ci (это могут быть размер и время, объем инвестиций и ожидаемый доход, и т.д.). Требуется найти оптимальную выборку Ai1…Aik из этого набора, т.е. такую, для которой, например, при заданном ограничении на суммарный вес достигается максимальная стоимость
С такой проблемой сталкивается, например, путешественник, упаковывающий чемодан, суммарный вес которого ограничен Wmax кг, а ценность вещей должна быть побольше, или инвестор, которому надо выгодно вложить Wmax млн р. в какие-то из n возможных проектов, каждый из которых имеет свою стоимость и ожидаемый доход.
Решение данной задачи состоит в переборе всех возможных выборок {(i1,..,ik),0≤k≤n}из n значений {1,2,..n}. Например, для n=3 таких выборок 2n=8: {1,2,3},{1,2},{1,3},{2,3},{1},{2},{3},{}.
Двоичное дерево решений -это структура зависимости данных, которую можно представить в виде череды модулей IF..ElSE. Если такие деревья упорядочить, то операции поиска, вставки и удаления будут выполняться очень быстро. Доступ к элементам, их вставка и удаление могут выполняться в любом порядке. Кроме того, операция поиска не носит разрушительный характер. Большинство функций над деревьями носят рекурсивный характер, поскольку дерево само по себе является рекурсивной структурой данных(т.е. каждое поддерево само является деревом)
Каждый элемент двоичного дерева имеет информационные поля.
Процедура метода ветвей и границ
Метод ветвей и границ сводится к построению дерева возможных вариантов, определению оценки границы решения для каждой вершины дерева, отсечению бесперспективных вершин. Эффективность метода ветвей и границ зависит от удачного определения оценки границы решения. Плохая оценка может может приводить к перебору почти всех вариантов решения. Стратегия отсечения заведомо неприемлемых и неоптимальных решений позволяет резко сократить количество просматриваемых вариантов.
Ниже приведен листинг программы, реализующей решение сформулированной задачи методом ветвей и границ. Здесь введен массив элементов a, имеющих тип записи с полями w и c. При генерации текущей и оптимальной выборок используются множества S и optS из индексов, входящих в выборку элементов. В процедуре Vbr(i,tw,ac) введены дополнительно два формальных параметра: tw - суммарный вес текущей выборки и ac – общая ее стоимость, т.е. стоимость, которую еще можно достичь, продолжая текущую выборку на данном пути. Критерием <приемлемо включение i-го элемента> является тот факт, что он подходит по весовым ограничениям, т.е. tw+a[i].w≤Wmax.
Если элемент не подходит по этому критерию, то попытки добавить еще один элемент в текущую выборку можно прекратить. Если речь идет об исключении, то критерием <приемлемости, невключения>, т.е. возможности продолжения построения текущей выборки, будет то, что после данного исключения общая стоимость текущей выборки ac будет не меньше полученной до этого стоимости maxC оптимальной выборки, находящейся в optS: aca[i].c>maxC.
Ведь если сумма меньше, то продолжение поиска, хотя он и может дать некоторое решение, не приведет к оптимальному решению. Следовательно, дальнейший поиск на текущем пути бесполезен.