IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача коммивояжера и задача обедающие философы
Guilty
сообщение 28.05.2005 14:40
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Здравствуйте люди ! Буду очень признателен , если вы мне поможете чем-нибудь !
У меня два вопроса :
1) Курсовая работа по САОДу : "Решение задачи коммивояжера - метод проб и ошибок" . Я ваще не знаю что представляет собой этот метод , ну может кто слышал ! Знаю что тока этот алгоритм можно реализовать с помощью реализации алгоритма "обхода конем шахматной доски" , т.е. если я реализую этот алгоритм , то это и будет метод проб и ошибок !
2) Курсовая работа по ОС(или по ТВП) : "реализация выч. системы для реализации итерационных выч-ых процессов на основе типовой задачи Обедающие философы" !

Заранее спасибо ! Я ваще попадаю , у меня нынче 5 курсачей , вот эти 2 я никак не успеваю сделать ! ХЭЛП ! ! ! :o :o :o

Я кстати тут новенький , прошу любить и жаловать ! ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 28.05.2005 15:04
Сообщение #2


Гость






Что касается "Задачи об обедающих философах":

Задача «Обедающие философы»

Рассмотрим формулировку задачи об обедающих философах в терминологии, предложенной Э. Дейкстрой. За круглым столом расставлены пять стульев, на каждом из которых сидит определенный философ (Фi ).

В центре стола – большое блюдо спагетти, а на столе лежат пять вилок (B1..B5) – каждая между двумя соседними тарелками. Каждый философ может находиться только в двух состояниях – либо он размышляет, либо ест спагетти. Начать думать философу ничто не мешает. Но чтобы начать есть, философу нужны две вилки: одна в правой руке, другая в левой. Закончив еду, философ кладет вилки слева и справа от своей тарелки и опять начинает размышлять до тех пор, пока снова не проголодается.

Существует множество различных формулировок данной задачи, в одной из которых философы интерпретируются как процессы, а вилки – как ресурсы. Задача «обедающие философы» удобна для изучения тупиковых ситуаций в системах парал­лельных процессов.

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

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

PROGRAM обедающие_философы;
VAR вилка[5]: ARRAY OF SEMAPHORE;
K:INTEGER;

PROCEDURE философ(i:INTEGER);
VAR левая,правая:1..5;
BEGIN
левая:=(i+1) mod 5;
правая:=i mod 5;
WHILE истина DO BEGIN
<размышления>;
P(вилка[левая];вилка[правая]);
<еда>;
V(вилка[левая];вилка[правая]);
END
END;

BEGIN
(* инициализация массива семафоров *)
K:=5;
REPEAT вилка[K]:=1; K:=K-1 UNTIL K=0;
PARBEGIN
философ(1);
...
философ(5);
PAREND
END.


При выполнении Р-примитива блокировка процесса не производится только в том случае, если оба семафора Р-примитива являются «открытыми». В представленном решении предполагается, что каждый из философов берет две необходимые для еды вилки одновременно.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"