Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
11
Добавлен:
28.10.2018
Размер:
3 Мб
Скачать
☆

17.5Выдает список работников работают над проектом

CREATE PROC WORKERS

@proekt varchar(30)

As

SELECT Работники .Табельный_номер, Работники .ФИО from Работники

Inner join Проекти on Работники.Код_Проекта= Проекти.Код_Проекта

Where Проекти.Название =@proekt

18.1 Многозадачность. Распределение времени с вытеснением. Очереди потока и обработка сообщений. Архитектура очередей сообщений в Win32.

Многозадачность. Очереди потока и обработка сообщений.

Система распределяет процессорное время между потоками, но не между процессами. Способность ОС прерывать поток практически в любой момент и передавать процессорное время ожидающему потоку называется вытесняющей многозадачностью.

Большинство операций, выполняемых Win32 приложениями, инициируются оконными сообщениями. Различают два вида посылки сообщений:

  1. синхронная;

  2. асинхронная.

Синхронная предполагает ожидание реакции на сообщение и приостановку своего выполнения, а асинхронная - продолжение выполнение потока без сообщений.

Рассмотрим архитектуру очередей сообщений в Win32. Всякий раз при создании потока система создает структуру THREADINFO и связывает ее с этим потоком. Эта структура не документирована и включает следующее:

  1. очередь асинхронных сообщений потока (posted message queue);

  2. очередь синхронных сообщений потока (sent message queue);

  3. очередь ответных сообщений (reply message queue);

  4. виртуальная очередь ввода (virtualized input queue);

  5. флаги пробуждения.

Сообщение ставится в очередь асинхронных сообщений функцией:

BOOL PostMessage( HWND hWnd, // описатель окна, куда посылаем сообщение                   UINT Msg, // сообщения                   WPARAM wParam, // первый параметр сообщения                   LPARAM lParam // второй параметр сообщения );

Когда поток вызывает эту функцию, система определяет, каким потоком создано окно hWnd и помещает сообщение Msg в его очередь сообщений.

Посылка синхронных сообщений:

LRESULT SendMessage( HWND hWnd,                      UINT Msg,                      WPARAM wParam,                      LPARAM lParam  );

Это сообщение отправляется непосредственно оконной процедуре. Оконная функция обработает сообщение и возвратит результат. SendMessage вернет управление только после того, как оконная процедура обработает сообщение.

18.2 Алгоритм упорядочения поиска в пространстве состояний.

Алгоритм упорядоченного перебора А:

Поместить начальные вершины в список OPEN и вычислить значение .

1) Если список OPEN пусть, значит решений нет. 2)Взять из OPEN ту вершину для которой - минимально, перенести её в CLOSED. Дать этой вершине имя n. В случаи равенства значений -, выбрать любую, отдавая предпочтение целевой. 3)Если n - целевая вершина, то выход с указанием решения по средствам указателей. 4)Раскрыть вершину n. Для порожденных вершин посчитать . Если порожденных вершин нет то перейти к п2. 5)Связать с теми вершинами ni- которых нет в списках OPEN и CLOSED посчитанные значения и поместить их в список OPEN. Провести указатели к n. 6)Те порожденные вершины, которые есть в OPEN и CLOSED связать со значениями , если эти значения меньше, чем вычисленные раньше. Поместить их в OPEN и связать указателями к вершине n. 7)Перейти к пункту 2.

ПРИМЕР:

Оптимальный алгоритм перебора

Оптимальным называется алгоритм, который позволяет определить оптимальный путь при минимальном количестве открытых вершин. При этом алгоритм, который гарантирует нахождение оптимального пути будем называть допустимым (не обязательно оптимальным)

Оптимальным будем называть любое решение минимальной стоимости, связывающее начальную и конечную вершины.

В формуле для текущего значения целевой функции первое слагаемое определяется по ходу решения. Второе слагаемое определяется исходя из эвристической информации

Харт, Нильсон и Рафаэль определили условие при котором алгоритм упорядоченного перебора А становится оптимальным становится оптимальным алгоритмом А*. Это условие сформулировано в следующей теореме:

ТЕОРЕМА: Если для всех вершин n выполняется условие

где -эвристическое значение n - действительное. И стоимости всех дуг превосходят некоторое число >0, то алгоритм А будет допустимым. Выбрав в качестве найбольшей из нижних границ прейдем к тому, что раскрывается наименьшее число вершин, при допустимости алгоритма, т.е. А* становится оптимальным, если в качестве выбирается

ЗАМЕЧАНИЕ: Часто эвристическая сила алгоритма может быть повышена если n не является нижней границей, но при этом не сохраняется допустимость алгоритма.

Оптимальный алгоритм эвристического поиска А*

Оптимальным называется алгоритм, который позволяет определить оптимальный путь при минимальном количестве открытых вершин. При этом алгоритм, который гарантирует нахождение оптимального пути будем называть допустимым (не обязательно оптимальным)

Оптимальным будем называть любое решение минимальной стоимости, связывающее начальную и конечную вершины.

В формуле для текущего значения целевой функции первое слагаемое определяется по ходу решения. Второе слагаемое определяется исходя из эвристической информации

Харт, Нильсон и Рафаэль определили условие при котором алгоритм упорядоченного перебора А становится оптимальным становится оптимальным алгоритмом А*. Это условие сформулировано в следующей теореме:

ТЕОРЕМА: Если для всех вершин n выполняется условие где -эвристическое значение n - действительное. И стоимости всех дуг превосходят некоторое число >0, то алгоритм А будет допустимым.

Выбрав в качестве найбольшей из нижних границ прейдем к тому, что раскрывается наименьшее число вершин, при допустимости алгоритма, т.е. А* становится оптимальным, если в качестве выбирается

ЗАМЕЧАНИЕ: Часто эвристическая сила алгоритма может быть повышена если n не является нижней границей, но при этом не сохраняется допустимость алгоритма.