Контрольная: Разработка диалоговой системы, оформленной в виде пакета прикладных программ и реализующей идею искусственного интеллекта - текст контрольной. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Контрольная

Разработка диалоговой системы, оформленной в виде пакета прикладных программ и реализующей идею искусственного интеллекта

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Контрольная работа
Язык контрольной: Русский
Дата добавления:   
 
Скачать
Архив Zip, 36 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной работы

Узнайте стоимость написания уникальной работы

1.Задание на лабораторную работу Разработать диалоговую систему , оф ормле нную в виде пакета прикладных программ и реализующую идею искусственного интеллекта . Для этого необходимо : * Самостоятельно выбрать предметную область интеллектуального пакета * Для выбранной предметной области описат ь семантическую сеть и правила выв ода (базу знаний ) * Разработать блоки системной части пакет а , реализующие : * машину логического вывода * процедуры работы с семантической сетью * Подготовить отладочные варианты наборов данных * Провести машинный эксперимент * Описать полученные результаты 2.Руководство пользователя 2.1. Назначение программы В качестве предметной области была в ыбрана кулинария. Программа предназначена для получения инф ормации о составе различных кулинарных блюд . Пользователю предоставляется возможность перечи слить несколь ко ингредиентов и получить информацию о том , что из этого набора можно приготовить , или ввести интересующее блюдо и узнать из чего оно состоит , ил и ввести как ингредиенты так и готовый продукт и узнать достаточно ли введенных компонент для приготовления в ы бранно го блюда. Программа позволяет корректировать имеющую ся базу знаний и создавать новую . Корректи ровка заключается в добавлении и удалении знаний и фактов . Но в целях соблюдения целостности базы знаний программа не поз волит удалить некоторые знани я и факты . Если факт входит в состав знания , то его удаление повлечет нарушение целостности базы . Программа предложит сначала удалить знания , в которые входит этот факт , а потом уже сам факт. 2.2.Описание базы знаний База знанийФакты (деклара тивные знания )Правила (процедурные знания ) Декларативные знания Числовой кодЗначение 12 яйца 23 яйца 34 яйца 4100 грамм молока 5200 грамм молока 6400 грамм молока 70,5 ложки соли 81 ложка соли 92 ложки соли 101 ста кан муки 112 стакана муки 124 стакана муки 1310 лож ек сахара 1413 ложек сахара 1515 ложек сахара 16Изюм 17Дорожжи 18Творог 19Омлет на 1-го челов ека 20Омлет на 2-х человек 21Опара 22Тесто 23Б лины 24Яичница на 1-го человека 25Яичница на 2-х человек 26Кулич 27Ватрушка 28Жарить 29Печь Процедурные знания Код порождаемого фактаКо личество свидетельствСвидетельства 1941,4,7,282043,5,8,282145,9,11,1722521,3,4,12,1523222,282431,7,282533,8,2826322,16,2927322,18,29 2.3. Описание диалога Данная программа построена по принципу диалога с пользователем , что обеспечивает у добство и психолог ический комфорт при работе с ней . После запуска программы появляется станда ртное windows-окно - в данном случае главное окн о , приглашающее вас к работе . Данное окно содержит картинку , располагающую вас к пр иятной реализации программного продукта , и ме ню и з трех пунктов : Главное меню , с одержащее подпункты : Работа с системой и В ыход , "Помощь " и О программе . Выбрав Работа с системой , вы не только узнаете о ее названии и версии , но и о создат елях таковой . Выбор можно осуществлять кроме мыши с помощью сочета н ия клави ш (Alt + соответствующая буква ). Нажав меню Работа с системой , вы окажитесь в окне CulinaryMiracles г де вам будет представлены следующие возможнос ти системы : Правка , Работа , Выход . Ознакомившись с пунктом Помощь , в котором содержится общая информа ц ия по данному прог раммному продукту , вы смело можете приступать к реализации основных действий . При выборе Работа с системой появится рабочее окно , где вам будет предложены имеющиеся факты и цели исходной базы з наний . Теперь все в ваших руках . Данная про грамма предоставляет три варианта ре ализации ее возможностей . Во-первых , вы можете выбрать интересующие вас факты и спросит ь у системы , что можно из них приготов ить , во-вторых , выбрать желаемые цели и зап росить , какие факты необходимы для их реал изации , и наконец в-третьих , выбрать и факты и цели , а затем система выдаст сообщение о том , что все в порядке либо подскажет вам какие из выбранных фактов оказались лишними , а каких не хвата ет . Выше перечисленные действия реализуются л егко и просто с помощью кнопо к : добавить факт /цель в список выбранных фактов /целей - "(", удалить факт /цель из списк а выбранных фактов /целей - "(" и запуск на выполнение "OK". Для выполнения последующих запрос ов вам необходимо нажать кнопку "Сброс ". Для модернизации возможностей "Cul inary Miracles" вос пользуйтесь пунктом Правка , где вам будут представлены факты , снабженные информацией , то есть , простой ли это факт или порождаем ый факт с содержащимися в нем свидетельст вами . В данном пункте меню вы можете н е только добавить или удалить факты исходной базы знаний , но и сохранить измененную (новую ) базу в файл , а также открыть любую из предложенных. Все компоненты программы снабжены помощ ью , подсказками , что облегчает работу пользова теля , как-то : сообщения о допущенных ошибках , запрос сис темы о том , действительно ли вы хотите совершить то или иное де йствие и т.д . Окончив работу , вы покидаете систему с помощью пункта Выход или д ругими стандартными способами Windows. 2.4. Описание работа машинного логического вывода 2.4.1. Описание ст ратегии Стратегия реализации поставленной задачи разбита на 3 возможных варианта желаний п ользователя . Все зависит от того , что поль зователь введет : только факты (компоненты ), толь ко знания (блюда ), и факты и знания . Сис тема сама распознает , какой в ариант вв еден и пойдет по нужному пути. Случай 1. Введены только факты . В данном случае система задействует алгоритм планиров ания с прямым ходом . Если хоть один це левой факт (т.е . съедобное блюдо ) достижим , т о программа покажет , что именно . Результатом м ожет стать только одно блюдо . Т.е . на неимеющее смысла перечисление всех ингр едиентов , программа скромно выдаст только одн о блюдо. Случай 2. Введены только знания . В этом случае программа задействует алгоритм плани рования с обратным ходом . Можно ввести ка к одно , так и несколько блюд , и программа выдаст все ингредиенты для интерес ующих знаний. Случай 3. Введены и факты и знания . В этом случае система анализирует , что необ ходимо для введеных знаний , потом какие не обходимые факты ввел пользователь и в зак люч ении сообщает какие факты лишние , а каких недостает. 2.4.2. Прямое планирование Подготовка : обнуление различных ключей и счетчиков. Цикл на организацию обработки базы зна ний до тех пор , пока не будет получено первое целевое значение или не станет ясна невозможность его получения. Цикл на просмотр всех правил до по рождения целевого факта . .Внутри этого цикла осуществляется проверк а на необходимость порождения правила и возможность порождения правила . Если и то и то подтверждается , то порождается фак т (правило ), и если этот факт целево й , то обработка заканчивается и этот факт запоминается , иначе переход к следующему правилу. . Конец цикла. Конец алгоритма , если был порожден цел евой факт , то выдача результата на экран , иначе выдача сообщения о невозмо жнос ти приготовления ни одного блюда из предл оженных компонентов. Алгоритм прямого планирования реализован в процедуре Direct. 2.4.3. Обратное планирование Подготовка : обнуление различных ключей и счетчиков. Цикл на просмотр всех введенных поль зователем правил . Занесение этого значения в специальный массив. Цикл на разложение каждого введенного пользователем правила на простые компоненты . Все компоненты (факты и знания ) заносятся в специальный массив , который анализируется н а наличие в нем пр авил . Если прави ло найдено , то его разлагают на более простые составляющие , и так то тех пор , пока от введенного правила останутся тольк о простые факты. Конец цикла . Переход к следующему введ енному правилу. Конец алгоритма . Выдача результатов на экран. Алгоритм прямого планирования реализован в процедуре Inv. 2.5.Примеры реализации основных функций по льзователя Задание фактов и получение цели Задание целей и получение фактов Задание фактов и целей и получение информации о лишних и недостающих фак тах Задание фактов и целей и получение положительного сообщения системы Добавление факта в базу 3.Описание программы 3.1. Общие свойства Любая программа в интегрированной среде разработки приложений Delphi 4 состоит из файла п роекта (файл с расширен ием dpr) и нескольк их модулей (файлы с расширением pas), каждый и з которых описывает программную единицу Object Pascal. Ф айл проект представляет собой программу , напи санную на языке Object Pascal и предназначенную для обработки компилятором . Эта программа а втоматически создается Delphi, содержит лишь несколько строк и не предназначена для редактирова ния. Данная программа написана с помощью ин струмента программирования Delphi 4 и состоит из фа йла проекта CulinaryMiraclesи трех модулей : Culinary.pas, About.p as, Help.pas. 3.2. Логическая структура программы Так как язык программирования Object Pascal - это объектно-ориентированный язык , то отобразить схематично многообразие процедур - обработчиков со бытий нажатий на многочисленные кнопки , вызов ов меню и прочее не позволяет лист бумаги . Так что логическая структура отобра жает только модули работы системы по обра ботке введенных данных , добавлению и удалению фактов , сохранению и открытию базы знаний . 3.3.Описание функций модулей 1procedure FormActivate Задание начальных параметров , загрузка базы знаний Base.dat2. 2procedure Timer1Timer Обеспечивает бегущие надписи при заставке 3. 3procedure N6ClickОбработчик вызова меню О програ мме 4. 4procedure N2ClickОбработчик вызова меню Работ а с системой 5. 5Procedure SpeedButton3ClickОбработчик нажатия кнопки Выход , выход из программы 6. 6Procedure SpeedButton1ClickОбработчик нажатия кнопки Правка 7. 7Procedure SpeedButton8ClickОбработчик нажатия кнопки Возврат , возврат в главное меню 8. Proce dure SpeedButton2ClickОбработчик нажатия кнопки Раб ота , появления окна для выбора фактов и знаний 9. procedure N7ClickОбработчик вызова пункта Возврат в окне выбора фактов procedure BitBtn1ClickЗанесение фактов в окошко "Выбранн ые факты "11. Procedure BitB tn3ClickЗанесение фактов в окошко " Выбранные цели "12. Procedure BitBtn5ClickОбработчик нажатия кнопки ОК , обра ботка введеных данных , выдача резльтатов 13. Procedure BitBtn6ClickОбработчик нажатия кнопки Сброс , о бнуление счетчиков 14. Procedure Timer2TimerО беспечивает выплыва ние надписи ОК !15. Procedure LoadBaseПроцедура открытия новой базы 16. procedure SaveBaseПроцедура сохранения текущей базы 17. Procedure SpeedButton6ClickОбработчик нажатия кнопки Открыть БЗ , выдача соответствующего диалогового окна 18. Procedure SpeedButton7ClickОбработчик нажатия кнопки Сохранить как , выдача соответствующего диалогового окн а 19. procedure ListBox1ClickОтображение фактов в окне "Имеющие ся факты "20. Procedure SpeedButton4Click Обработчик нажатия кнопки Добавить , отобра жение окошка для добавления в БЗ фактов 21. Procedure SpeedButton10ClickОбработчик нажатия кнопки Отмена в окошке для добавления фактов , возврат в окно Правка 22. Procedure RadioGroup1ClickОбработчик выбора типа факта в окне добавления фактов 23. procedure AddSimpleFactПроцедура добавления простого факта 24. Procedure SpeedButton9ClickОбработчик нажатия кнопки ОК в окошке для добавления фактов , вызов процеду ры AddSimpleFact25. Procedure SpeedButton11ClickОбработчик нажатия кнопки Добавить при добавлении фа ктов в БЗ , эта кнопка добавляет факты в знание при его определении 26. Procedure AddComplexFactПроцедура добавления правила 27. procedure DeleteFactПроцедура удаления факта 28. Procedure SpeedButton5ClickОбработчик нажатия кнопки Удалить 29. Procedure BitBtn2ClickУдаление фактов в окне "Выбранные факты "30. procedure BitBtn4ClickУдаление фактов в окне "Выбранные цели "31. procedure N 5 Click Вызов пункта меню Помощь , появление окна Помощь 32. procedure N 4 Click Вызов пункта меню Выход , выход из про граммы 4.Список литературы 1. В.А.Благодатских , С.Н.Семенов , А.М.Хамов . Лаборат орный практикум по прикладному и системному программированию .- М .: Финансы и статистика , 1985. 2. Фаронов В.В . Delphi4,учебный курс . - М .: "Нолидж ",1999. 3. В.А . Благодатских , М.А . Енгибарян , Е.В . К овалевская . Экономика , разработка и использование программного обеспечения ЭВМ . - М .:Финансы и статистика , 1995. 4. Роб Баас , Майк Фервай . Delphi 4 Полное руко водство - Киев , издательская гру ппа BHV, 1999. 5.Приложения 5.1.Листинги программы unit Culinary ; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg , Menus, Buttons; type TForm1 = class(TForm) Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Timer1: TTimer; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; ListBox1: TListBox; ListBox2: TListBox; Label4: TLabel; Label5: TLabel; Bevel1: TBevel; Bevel2: TBevel ; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; Bevel3: TBevel; ListBox4: TListBox; ListBox5: TListBox; ListBox6: TListBox; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Bevel4: TBevel; Bevel5: TBevel; N7: TMenuItem; BitBtn5: TBitBtn; Co mboBox1: TComboBox; ComboBox2: TComboBox; Label11: TLabel; Label12: TLabel; BitBtn6: TBitBtn; Label13: TLabel; Timer2: TTimer; ListBox3: TListBox; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Bevel6: TBevel; Bevel7: TBevel; Label6: TLabel; ComboBox3: TComboBox; Edit1: TEdit; RadioGroup1: TRadioGroup; Panel1: TPanel; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; Label14: TLabel; Label15: TLabel; SpeedButton11: TSpeedButton; procedure FormActivate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N6Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton8Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn3Clic k(Sender: TObject); procedure BitBtn5Click(Sender: TObject); procedure BitBtn6Click(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure LoadBase; procedure SaveBase; procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton10Click(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure AddSimpleFact; procedure SpeedButton9Click(Sender: TObject); procedure SpeedButton11Click(Sender: TObject); procedure AddComplexFact; procedure DeleteFact; procedure SpeedButton5Click(Sender: TObject); procedure BitBtn2Cli ck(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N4Click(Sender: TObject); private Private declarations public Public declarations end; TFactFile = record факт Number:integer; номер факта Znach:string[40]; значение факта Q:integer; количество порождаемых фактов FactIn:array[1..10] of integer; массив порождаемых фактов Zel:byte; Целевой или нецелево й факт end; TKnow = Record порождаемый факт Number:integer; номер порождаемого факта Q:integer; количество порождаемых фактов FactIn:array[1..10] of integer; массив порождаемых фактов Zel:byte; end; TFact= record факт Number:integer; номер факта Znach:string[40]; значение факта end; TBase=Record Fact:array[1..40] of integer; Rule:array [1..40] of TKnow; end; TFF=file of TFac tFile; var Form1: TForm1; FF:TFF; TermFact:array[1..50] of integer; массив c тем что хотим иметь на выходе NE,NK,NF,NF1,NFF,NR,KEND,Rez,NST,Num:integer; Spis:array[1..30] of integer; необходимые факты для цели SpisF:array[1..30] of integer; выбранные факты BaseKnow:TBase; Knowledge:array[1..5] of integer; массив с выбранными правилами VectFact:array[1..50] of TFact; база фактов implementation uses About, Help; $R *.DFM procedure TForm1.FormActivate(Sender: TObject); var Know:TKnow; Fact:TFact; FactFile:TFactFile; i,j:integer; begin NF:=0;NF1:=0;NK:=0; AssignFile(FF,'Base.dat'); Файл с фактами Reset(FF); NFF:=0; While Not eof(FF) do begin Read(FF,FactFile); NFF: =NFF+1; VectFact[NFF].Number:=FactFile.Number; VectFact[NFF].Znach:=FactFile.Znach; ListBox1.Items.Add(VectFact[NFF].Znach); ListBox3.Items.Add(VectFact[NFF].Znach); if FactFile.Q>1 then begin NR:=NR+1; BaseKnow.Rule[NR].Number:=FactFile.Number; BaseKnow.Rule[NR].Zel:=FactFile.Zel; ListBox5.Items.Add(FactFile.Znach); BaseKnow.Rule[NR].Q:=FactFile.Q; for i:=1 to Base Know.Rule[NR].Q do BaseKnow.Rule[NR].FactIn[i]:=FactFile.FactIn[i]; end; end; closefile(FF); end; procedure TForm1.Timer1Timer(Sender: TObject); begin label1.top:=label1.top-2; label2.left:=label2.left+4; label3.top:=label3.top+2; if label2.left=100 then timer1.Enabled:=false; end; procedure TForm1.N6Click(Sender: TObject); begin AboutBox.Show; end; procedure TForm1.N2Click(Sender: TObject); begin N1.Visible:=false; N2.Visible:=false; N3.Visible:=false; N4.Visible:=false; N5.Visible:=false; N6.Visible:=false; label1.Visible:=false; label2.Visible:=false; label3.Visible:=false; form1.Height:=150; form1.Width:=185; form1.BorderStyle:=bsDialog; form1.Position:=poScreenCenter; speedbutton1.Visible:=true; speedbutton2.Visible:=true; speedbutton3.Visible:=true; end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin close; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin form1.Height:=343; form1.Width:=450; form1.BorderStyle:=bsSingl e; form1.Position:=poScreenCenter; speedbutton1.Visible:=false; speedbutton2.Visible:=false; speedbutton3.Visible:=false; speedbutton4.Visible:=true; speedbutton5.Visible:=true; speedbutton6.Visible:=true; speedbutton7.Visible:=true; speedbutton8.Visible:=true; listbox1.Visible:=true; listbox2.Visible:=true; bevel1.Visible:=true; bevel2.Visible:=true; bevel3.Visible:=true; bevel3.Width:=430; label4.Visible:=true; label5.Visible:=true; label6.Visible:=true; end; procedure TForm1.SpeedB utton8Click(Sender: TObject); begin form1.Height:=150; form1.Width:=185; form1.BorderStyle:=bsDialog; form1.Position:=poScreenCenter; speedbutton1.Visible:=true; speedbutton2.Visible:=true; speedbutton3.Visible:=true; speedbutton5.Visible:=false; speedbutt on6.Visible:=false; speedbutton7.Visible:=false; speedbutton8.Visible:=false; listbox1.Visible:=false; listbox2.Visible:=false; bevel1.Visible:=false; bevel2.Visible:=false; bevel3.Visible:=false; bevel3.Width:=481; label4.Visible:=false; label5.Visible:=false; label6.Visible:=false; panel1.Visible:=false; edit1.Visible:=false; combobox3.Visible:=false; radiogroup1.Visible:=false; speedbutton11.visible:=false; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin form1.Height:=34 3; form1.Width:=503; form1.BorderStyle:=bsSingle; form1.Position:=poScreenCenter; speedbutton1.Visible:=false; speedbutton2.Visible:=false; speedbutton3.Visible:=false; BitBtn5.Visible:=true; BitBtn6.Visible:=true; bevel3.Visible:=true; bevel4.Visible:=tru e; bevel5.Visible:=true; bevel6.Visible:=true; bevel7.Visible:=true; ListBox3.Visible:=true; ListBox4.Visible:=true; ListBox5.Visible:=true; ListBox6.Visible:=true; label7.Visible:=true; label8.Visible:=true; label9.Visible:=true; label10.Visible:=true; label11.Visible:=true; label12.Visible:=true; ComboBox1.Visible:=true; ComboBox2.Visible:=true; BitBtn1.Visible:=true; BitBtn2.Visible:=true; BitBtn3.Visible:=true; BitBtn4.Visible:=true; N7.Visible:=true; end; procedure TForm1.N7Click(Sender: TObject); begin form1.Height:=150; form1.Width:=185; form1.BorderStyle:=bsDialog; form1.Position:=poScreenCenter; speedbutton1.Visible:=true; speedbutton2.Visible:=true; speedbutton3.Visible:=true; BitBtn5.Visible:=false; BitBtn6.Visible:=false; bevel3.Visible:=false; bevel4.Visible:=false; bevel5.Visible:=false; bevel6.Visible:=false; bevel7.Visible:=false; ListBox3.Visible:=false; ListBox4.Visible:=false; ListBox5.Visible:=false; ListBox6.Visible:=false; label7.Visible:=false; label8.Visible:=fa lse; label9.Visible:=false; label10.Visible:=false; BitBtn1.Visible:=false; BitBtn2.Visible:=false; BitBtn3.Visible:=false; BitBtn4.Visible:=false; N7.Visible:=false; label11.Visible:=false; label12.Visible:=false; ComboBox1.Visible:=false; ComboBox2.Visib le:=false; BitBtn6Click(Sender); end; procedure TForm1.BitBtn1Click(Sender: TObject); var rab:integer; begin rab:=ListBox3.itemindex; listbox4.Items.Add(VectFact[rab+1].Znach); NF1:=NF1+1; SpisF[NF1]:=VectFact[rab+1].Number; BaseKnow.Fact[NF1]:=VectFact[rab+1].Number; NF:=NF1; end; procedure TForm1.BitBtn3Click(Sender: TObject); var rab,i,j:integer; begin rab:=ListBox5.itemindex; for i:=1 to NFF do if BaseKnow.Rule[rab+1].Number=VectFact[i].Number then begin listbox6.Items.Add(VectFact[i].Znach); NK:=NK+1; Knowledge[NK]:=VectFact[i].Number; end; end; Procedure Direct; var KIZ,NS,KA,k,i,l,j:integer; begin Теперь алгоритм прямого хода KEnd:=0;KIZ:=0;NS:=0; While ((KEnd=0) and (KIZ=0)) do begin организация обработки БЗ до тех п ор , пока не получим требуемое целевое значение или не станет ясна невозможность его получения KIZ:=1; i:=1; While (i<=NR) and (Kend=0) do begin Просмотр всех правил до порождения целевого факта KA:=0; Проверка : нужно ли порождать факт ? k:=1; While ((KA=0) and (K<=NF)) do begin if BaseKnow.Rule[i].Number=BaseKnow.Fact[k] then KA:=1; Факт входит в множество имеющихся k:=k+1; end; Проверка : можно ли по родить факт ? j:=1; While ((j<= BaseKnow.Rule[i].Q) and (KA=0)) do begin Анализ порождающих фактов KA:=1; k:=1; While (k<=NF) and (KA=1) do begin Проверка наличия порождающего ф акта есть ли факт в БЗ if BaseKnow.Rule[i].FactIn[j]=BaseKnow.Fact[k] then KA:=0; k:=k+1; end; если при выходе КА =1, то н ет факта, необходимого для порождения j:=j+1; end; if KA=0 then begin Все факты , необходимые для порожден ия нового факта , есть в наличие NF:=NF+1; BaseKnow.Fact[NF]:=BaseKnow.Rule[i].Number; KIZ:=0; Проверка : является ля порожденный факт целевы м if BaseKnow.Rule[i]. Zel=1 then begin KEND:=1; Rez:=BaseKnow.Rule[i].Number; end; end; i:=i+1; end; Конец очередного просмо тра всех правил Конец обработки БЗ end; end; Procedure Inv; var KVPC,KVPF,AnFact,NS1,Rab,FindFactAn:integer; L,NS,i,j,k,KA:integer; begin Алгоритм обратного хода KEnd:=0; L:=1; NST:=0; While (L<=NK) do begin Организация просмотра всех целевых фактов , пока не подтвердится возможно сть порождения каког-л . из них KEND:=0; Nst:=Nst+1; Spis[Nst]:=Knowledge[l]; While (Kend=0)do begin FindFactAn:=0; j:=0; While (FindFactAn=0)and( j<=NST) do выбор факта для анализа begin for k:=1 to NR do if BaseKnow.Rule[k].Number=Spis[j] then begin FindFactAn:=1; Ищем , есть ли правило AnFact:=Spis[j]; которое можно породить for i:=j to Nst-1 do Spis[i]:=Spis[i+1]; Nst:=Nst-1; end; j:=j+1; end; if FindFactAn=0 then KEnd:=1 Факта для анализа нет , конец а нализа else begin i:=1; While (I<=NR) do begin анализ возм-ти порождения выбранн ого факта if AnFact= BaseKnow.Rule[i].Number then begin требуемый факт является порожденным for j:=1 to BaseKnow.Rule[i].Q do begin NST:=NST+1; Spis[Nst]:=BaseKnow.Rule[i].FactIn[j]; end; end; конец анализа порождаемого факта i:=i+1; end; While end; end; l:=l+1; end; Окончание обработки вс ех целевых фактов if NST=NK then KEND:=0 else KEND:=1; Ни один из целевых фактов не может быть порожден end; procedure TForm1.BitBtn5Click(Sender: TObject); нажали кнопку ОК var i,j,k,K A,l:integer; begin BitBtn5.enabled:=false; if (NF1<>0) and (NK=0) then факты введены , це ль не введена begin Direct; if Kend<>0 then begin for i:=1 to NFF do if VectFact[i].Number=R ez then ListBox6.Items.Add(VectFact[i].Znach); Label10.Caption:='Вы приготовите :'; Label10.Font.Color:=clnavy; end else Application.MessageBox(' Из выбранных компонентов ничего нель зя приготовить !',' Ошибка !',mb_iconwarning); end; if (NF1=0) and (NK<>0) then факты не введены , цель введена begin Inv; if KEnd<>0 then begin for i:=1 to NST do for j:=1 to NFF do if Spis[i]=VectFact[j].Number then ListBox4.Items.Add(VectFact[j].Znach); Label8.Caption:='Вам необходимо :'; Label8.Font.Color:=clnavy; end; end; if (NK<>0) and (NF1<>0) then а нализ на совпадение фактов с целью begin k:=1; While (k<=NR) do begin Если есть порождае мые факты i:=1; то раскладываем их на простые составляющие KA:=0; While (i <=NF1)and (KA=0) do begin if BaseKnow.Rule[k].Number=SpisF[i] then begin for j:=i to NF1-1 do SpisF[j]:=SpisF[j+1]; NF1: =NF1-1; KA:=1; end; i:=i+1; end; if KA=1 then begin for i:=1 to BaseKnow.Rule[k].Q do begin NF1:=NF1+1; SpisF[NF1]:=BaseKnow.Rule[k].FactIn[i]; end; k:=0; end; k:=k+1; end; INV; i:=1; While i<=NF1 do Проверка , что лишнее begin или чего не хватает KA:=0; j:=1; While (j<=NST) and (KA=0) do begin if SpisF[i]=Spis[j] then Ka:=1; j:=j+1; end; if KA=1 then begin for k:=i to NF1-1 do SpisF[k]:=SpisF[k+1]; i:=i-1; NF1:=NF1-1; for l:=j-1 to NST-1 do Spis[l]:=Spis[l+1]; NST:=Nst-1; end; i:=i+1; end; if (Nst=0)and (NF1=0) then Tim er2.Enabled:=true else begin KA:=0; for i:=1 to NST do for j:=1 to NFF do begin if (Spis[i]=VectFact[j].Number) and (KA=0) then begin combobox2.Text:=VectFact[j].Znach; KA:=1; end; if (Spis[i]=VectFact[j].Number) and (KA=1) then combobox2.Items.Add(VectFact[j].Znach); end; KA:=0; for i:=1 to NF1 do for j:=1 to NFF do begin if (SpisF[i]=VectFact[j].Number) and (KA=0) then begin combobox1.Text:=VectFact[j].Znach; KA:=1; end; if (SpisF[i]=VectFact[j].Number) and (KA=1) then combobox1.Items.Add(VectFact[j].Znach); end; end; end; if (Nk=0) and (NF1=0) then begin Application.MessageBox(' Исходные данные не введены !',' Ошибка ',mb_iconwarning); BitBtn5.Enabled:=true; end; end; procedure TForm1.BitBtn6Click(Sender: TO bject); begin listbox4.Items.Clear; listbox6.Items.Clear; label10.Caption:=' Выбранные цели '; label8.Caption:=' Выбранные факты '; Label10.Font.Color:=cllime; Label8.Font.Color:=cllime; NK:=0; NF1:=0; label13.Visible:=false; label13.Top:=104; ComboBox1.Clear; ComboBox2.Clear; BitBtn5.enabled:=true; end; procedure TForm1.Timer2Timer(Sender: TObject); begin label13.Visible:=true; label13.top:=label13.top+2; if label13.top=150 then timer2.Enabled:=false; end; procedure T Form1.LoadBase; var i:integer; FF: TFF; FactFile:TFactFile; begin i:=0; OpenDialog1.Filter:=' База знаний |*.dat'; if not OpenDialog1.Execute then exit; if FileExists(OpenDialog1.FileName)=false then begin Application.MessageBox(' Файл с таким именем не най ден !','Error',MB_iconwarning); exit; end else begin AssignFile(FF,OpenDialog1.FileName); reset(FF); NR:=0; NFF:=0; While Not eof(FF) do begin Read(FF,FactFile); NFF:=NFF+1; VectFact[NFF].Number:=FactFile.Number; VectFact[NFF].Znach:=FactFile.Znach; ListBox3.Items.Add(VectFact[NFF].Znach); ListBox1.Items.Add(VectFact[NFF].Znach); if FactFile.Q>1 then begin NR:=NR+1; BaseKnow.Rule[NR].Number:=FactFile.Number; BaseKnow.Rule[NR].Zel:=FactFile.Zel; ListBox5.Items.Add(FactFile.Znach); BaseKnow.Rule[NR].Q:=FactFile.Q; for i:=1 to BaseKnow.Rul e[NR].Q do BaseKnow.Rule[NR].FactIn[i]:=FactFile.FactIn[i]; end; end; end; closefile(FF); end; procedure TForm1.SpeedButton6Click(Sender: TObject); var inf:integer; begin inf:=Application.Messagebox(' Загрузить новую БЗ ?','Question',MB_YESNO+MB_ICONQUESTION); if inf=idNO then exit; if inf=idYes then begin ListBox1.Clear; ListBox2.Clear; ListBox3.Clear; ListBox4.Clear; ListBox5.Clear; ListBox6.Clear; LoadBase; end; end; pro cedure TForm1.SaveBase; var i,k,j:integer; FF: TFF; FactFile:TFactFile; begin SaveDialog1.Filter:=' База знаний |*.dat'; if SaveDialog1.Execute then begin assignfile(FF,SaveDialog1.filename); rewrite(FF); for i:=1 to NFF do Begin FactFile.Number:=VectFact[i].Number; FactFile.Znach:=VectFact[i].Znach; FactFile.Q:=0; FactFile.Zel:=0; for j:=1 to NR do if VectFact[i].Number=BaseKnow.Rule[j].Number then begin FactF ile.Q:= BaseKnow.Rule[j].Q; FactFile.Zel:= BaseKnow.Rule[j].Zel; for k:=1 to BaseKnow.Rule[j].Q do FactFile.FactIn[k]:=BaseKnow.Rule[j].FactIn[k]; end; write(ff,FactFile); end; en d else exit; closefile(FF); end; procedure TForm1.SpeedButton7Click(Sender: TObject); begin SaveBase; end; procedure TForm1.ListBox1Click(Sender: TObject); var i,j,rab,r,t:integer; begin label6.Visible:=true; t:=0; ListBox2.Clear; rab:=ListBox1.Itemindex; for i:=1 to NR do if VectFact[rab+1].Number=BaseKnow.Rule[i].Number then begin t:=1; for j:=1 to BaseKnow.Rule[i].Q do for r:=1 to NFF do if VectFact[r].Number=BaseKnow.Rule[i].FactIn[j]then ListBox2.Items.Add(VectFact[r].Znach); end; if t=1 then label6.Caption:='Порождаемый факт '; if t=0 then label6.Caption:=' Простой факт '; end; procedure TForm1.SpeedButton4Click(Sender: TObject); begin speedbutton6.Enabled:=false; speedb utton7.Enabled:=false; speedbutton8.Enabled:=false; panel1.Visible:=true; edit1.Visible:=true; combobox3.Visible:=true; radiogroup1.Visible:=true; radiogroup1.ItemIndex:=0; Num:=0; edit1.SetFocus; edit1.Clear; end; procedure TForm1.SpeedButton10Click(Sender: TObject); begin panel1.Visible:=false; edit1.Visible:=false; combobox3.Visible:=false; radiogroup1.Visible:=false; speedbutton11.visible:=false; speedbutton6.Enabled:=true; speedbutton7.Enabled:=true; speedbutton 8.Enabled:=true; end; procedure TForm1.RadioGroup1Click(Sender: TObject); begin if radiogroup1.ItemIndex=0 then begin combobox3.Enabled:=false; label14.Enabled:=false; speedbutton11.visible:=false; edit1.SetFocus; end; if radiogroup1.ItemIndex=1 then begin combobox3.Enabled:=true; label14.Enabled:=true; speedbutton11.visible:=true; edit1.SetFocus; end; end; procedure TForm1.AddSimpleFact; var i,t:integer; r:string; begin r:=edit1.text; for i:=1 to NFF do if r=VectFact[i].Znach then begin Application.MessageBox(' Такой факт уже существует !',' Ошибка ',mb_iconwarning); exit; end; t:=VectFact[NFF].Number; NFF:=NFF+1; VectFact[NFF].Number:=t+1; VectFact[NFF].Znach:=r; ListBox1.items.add(VectF act[NFF].Znach); ListBox3.items.add(VectFact[NFF].Znach); end; procedure TForm1.AddComplexFact; var i,t:integer; r:string; begin r:=edit1.text; for i:=1 to NFF do if r=VectFact[i].Znach then begin Application.MessageBox(' Такой факт уже су ществует !',' Ошибка ',mb_iconwarning); exit; end; t:=VectFact[NFF].Number; NFF:=NFF+1; VectFact[NFF].Number:=t+1; VectFact[NFF].Znach:=r; ListBox1.items.add(VectFact[NFF].Znach); ListBox3.items.add(VectFact[NFF].Znach); ListBox5.items.add(VectFact[ NFF].Znach); NR:=NR+1; BaseKnow.Rule[NR].Number:=VectFact[NFF].Number; BaseKnow.Rule[NR].Q:=Num; BaseKnow.Rule[NR].Zel:=1; for i:=1 to Num do BaseKnow.Rule[NR].FactIn[i]:=SpisF[i]; end; procedure TForm1.SpeedButton9Click(Sender: TObject); begin if radiogroup1.ItemIndex=0 then if edit1.Text='' then begin Application.MessageBox(' Не введены данные !',' Ошибка ',mb_iconwarning); exit; end else AddSimpleFact; if radiogroup1.ItemIndex=1 then if (edit1.Text='') or (ComboB ox3.Text='')or (Num=0)then begin Application.MessageBox(' Введены не все данные !',' Ошибка ',mb_iconwarning); exit; end else begin AddComplexFact; combobox3.Clear; end; edit1.Clear; Num:=0; end; procedure TForm1.SpeedButto n11Click(Sender: TObject); var rab:integer; begin rab:=ListBox1.itemindex; ComboBox3.Items.Add(VectFact[rab+1].Znach); ComboBox3.ItemIndex:=0; Num:=Num+1; SpisF[Num]:=VectFact[rab+1].Number; end; procedure TForm1.DeleteFact; var i,j,rab,t,k:integer; begin rab:=ListBox1.ItemIndex+1; k:=VectFact[rab].Number; for i:=1 to NR do for j:=1 to BaseKnow.Rule[i].Q do if BaseKnow.Rule[i].FactIn[j]=k then begin Application.MessageBox('Для сохранения целостност и б азы удалите вначале факт , содержащий в себ е данный !','Предупреждение ',mb_iconwarning); exit; end; for i:=rab to NFF-1 do begin VectFact[i].Number:=VectFact[i+1].Number; VectFact[i].Znach:=VectFact[i+1].Znach; end; NFF:=NFF-1; for i:=1 to NR do if k=BaseKnow.Rule[i].Number then begin for t:=i to NR-1 do begin BaseKnow.Rule[t].Number:=BaseKnow.Rule[t+1].Number; BaseKnow.Rule[t].Q:=BaseKnow.Rule[t+1].Q; BaseKnow.Rule[t].Zel:=BaseKnow.Rule[t+1].Zel; for j:=1 to BaseKnow.Rule[t].Q do BaseKnow.Rule[t].FactIn[j]:=BaseKnow.Rule[t+1].FactIn[j]; end; NR:=NR-1; end; ListBox1.Clear; ListBox2.Clear; ListBox3.C lear; ListBox5.Clear; for i:=1 to NFF do begin ListBox1.Items.Add(VectFact[i].Znach); ListBox3.Items.Add(VectFact[i].Znach); for j:=1 to NR do if VectFact[i].Number=BaseKnow.Rule[j].Number then ListBox5.Items.Add(VectFact[i].Zna ch); end; end; procedure TForm1.SpeedButton5Click(Sender: TObject); var inf:integer; begin inf:=Application.Messagebox(' Удалить факт ?','Question',MB_YESNO+MB_ICONQUESTION); if inf=idNO then exit; if inf=idYes then DeleteFact; end; procedure TForm1.BitBtn2Click(Sender: TObject); var rab,i,j:integer; begin if NF1>0 then begin rab:=ListBox4.Itemindex; for i:=rab+1 to NF1-1 do begin SpisF[i]:=SpisF[i+1]; BaseKnow.Fact[i]:=BaseKnow.Fact[i+1]; end; NF1:=NF1-1; NF:=NF1; ListBox4.Clear; for i:=1 to NF1 do for j:=1 to NFF do if SpisF[i]=VectFact[j].Number then ListBox4.Items.Add(VectFact[j].Znach); end; end; procedure TForm1.BitBtn4Click(Sender: TObject); var rab,i,j:integer; begin if NK>0 then begin rab:=ListBox6.Itemindex; for i:=rab+1 to NK-1 do Knowledge[i]:=Knowledge[i+1]; NK:=NK-1; ListBox6.Clear; for i:=1 to NK do for j:=1 to NFF do if Knowledge[i]=VectFact[j].Number then ListBox6.Items.Add(VectFact[j].Znach); end; end; procedure TForm1.N5Click(Sender: TObject); begin HelpBox.show; end; procedure TForm1.N4Click(Sender: TObject); begin close; end; end. 5.2.Распечатка экранных форм Заставка _ Был выбран пункт меню Работа с системой _ Окно пункта меню Правка _ Пользователь пожелал добавить факт , ото бразилось окошко _ _ В окне Правка м ожно просмотрет ь все факты , при этом узнать их статус и состав _PAGE _13_ _PAGE _1_ C оединение кабелем ви той парой ( UTP ) UTP (Unshielded Twisted Pair - неэкранированные скруче нные пары ) Общий термин , используемый для обозначения кабельных систем на основе неэкранированных скрученных попарно медны х проводников . используется также термин "витая пара ". Соединение каждого компьюте ра производится отдельным кабелем от устройства HUB. Приемущества очевидны ; топология "зв е зда ", возможность подключать каждого пользователя отдельным куском кабеля , устойчивость к сбоям , расширение до 100Mbit. Недостатки ; несколько более высо кая стоимость по отношению к коаксиал ьному кабелю , непргодность для длинных сегментов . Витую пару лучше всего использовать при наличчи в доме или подъезде нескольких абонент ов , которых легче соеденить используя один хаб и несколько кабелей от этого хаба к каждому пользователю неж ели проводить коаксиал через всех. Это сеть основа нная на эк pани pованной (STP) и ли неэк pани pованной (UTP) витой па pе . Hазывается эта сеть ETHERNET 10BASE-T и FAST ETHERNET 100BASE-X Сеть ст pоиться по топологии звезда. Станда pты зд есь такие : Максимальное pасстояние между двумя уст pойствами - 100 мет pов. Максимальное количество машин - 1024. Как показали опыты на обо pуд овании 3COM длина сегмента может достигать 170-250 мет pов . Hо нужно также учитывать пе pеход на 100Mbit п pи кото pом это , ско pее всего , pаботать не будет . Активные концентраторы ( HUBs ) Пе pвые ЛВС на Ethernet (10Base-2,- 5) были невелики из-за ог pаничени й на длину кабеля . Чтобы обеспечить возможность увеличивать сеть , была введе на концепция повто pителя . Они не п pосто соединяли два куска (имея 2! по pта ) кабеля , но и фильт pовали эл.сигналы , п pоход ящие между сегментами (от pу бали , к п pиме pу , сегмент в случае возникновения там "кз " и тд , т.е . выполняли "partitioning" - эл .pазбиение сети ). П pи пе pеходе на 10Base-T, была введена концепция - "по вто pителя-концент pато pа ", кото pый обычно п pосто называют концент pато pом (hub) или повто pителем (repeater). к н ему п pисоединяется каждый узел сети , вместо то го , чтобы че pез какой нибудь т pансиве p (если это необходимо ) п pисое диняться к общему кабелю . место , отведе нное коаксиальному кабелю в шинной се ти , занимает циф pовая шина концент pато pа , к кото pой че pез по pт повто pителя (как и к по pту повто pителя шинной сети ) подключаются узлы сети . Для Ethernet те pмины повто pитель и концент pато p взаимозаменяем (в FDDI используется те pмин concentrator,в ArcNet - hub . Коммутаторы ( Swich ) Устройство , соединя ющее две или несколько физических сетей и передающее пакеты из одной се ти в другую . Коммутаторы могут фильтро вать пакеты , т.е . передавать в другие сегменты или сети только часть трафика , на основе информации канального уровня (MAC-адрес ). Если адрес получ а теля пристутствует в таблице адресов моста , кадр передается только в тот сегмент или сеть , где находится получатель . Похожими устройствами являются повторители ( HUBs ), которые просто передают электрические сигналы из одного кабе ля в другой и маршрутизаторы ( router ), которые принимают решение о передаче пакетов на основе различных критериев , основа нных на информации сетевого уровня . В терминологии OSI мост является промежуточной системой на уровне канала передачи данных (Data Link Layer). Повторители и конц е нтраторы локальных сетей реализуют базовые технологии , разработанные для разделяемых сред передачи данных . Классическим пр едставителем такой технологии является тех нология Ethernet на коаксиальном кабеле . В та кой сети все компьютеры разделяют во времени е динственный канал связи , образованный сегментом коаксиального кабеля При передаче каким-нибудь компьютером кадра данных все остальные компьютеры принимают его по общему коаксиальному кабелю , находясь с пере датчиком в постоянном побитном синхронизме . На вр емя передачи этого кад ра никакие другие обмены информации в сети не разрешаются . Способ доступа к общему кабелю управляется несложны м распределенным механизмом арбитража - кажд ый компьютер имеет право начать перед ачу кадра , если на кабеле отсутствуют инфо р мационные сигналы , а при одновременной передаче кадров несколькими компьютера ми схемы приемников умеют распознавать и обрабатывать эту ситуацию , называемую коллизией . Обработка коллизии также несложна - все передающие узлы прекращают выставлять биты своих кадров на кабель и повторяют попытку передачи кадра че рез случайный промежуток времени . Работа всех узлов сети Ethernet в р ежиме большой распределенной электронной с хемы с общим тактовым генератором при водит к нескольким ограничениям , накладывае мым на сет ь . Основными ограничения ми являются : · Максимально допустимая длина сегмента . Она зависит от т ипа используемого кабеля : для витой па ры это 100 м , для тонкого коаксиала - 185 м , для толстого коаксиала - 500 м , а для оптоволокна - 2000 м . Для наиболее д еше вых и распространенных типов к абеля - витой пары и тонкого коаксиала - это ограничение часто становится вес ьма нежелательным . Технология Ethernet предлагает использовать для преодоления этого огранич ения повторители и концентраторы , выполняющ ие функции ус и ления сигнала , улучшения формы фронтов импульсов и исправления погрешностей синхронизации . Однако возможности этих устройств по увеличению максима льно допустимого расстояния между двумя любыми узлами сети (которое называется диаметром сети ) не очень велики - число повторителей между узлами не может превышать 4-х (так называем ое правило четырех хабов ). Для витой пары это дает увеличение до 500 м (рисунок 2.2). Кроме того , существует общее ограничение на диаметр сети Ethernet - не более 2500 м для любых типо в кабеля и любого количества уст ановленных концентраторов . Это ограничение нужно соблюдать для четкого распознавания коллизий всеми узлами сети , как бы далеко (в заданных пределах ) они друг от друга не находились , иначе кадр может быть передан с искаж ениям и . · Максимальное число узлов в сети . Стандарты Ethernet ограничивают число узлов в сети предельным з начением в 1024 компьютера вне зависимости от типа кабеля и количества сегмен тов , а каждая спецификация для конкрет ного типа кабельной системы устанавливае т еще и свое , более жесткое ограничение . Так , к сегменту кабеля на тонком коаксиале нельзя подключить более 30 узлов , а для толстого коа ксиала это число увеличивается до 100 уз лов . В сетях Ethernet на витой паре и оптоволокне каждый отрезок кабеля со единя е т всего два узла , н о так как количество таких отрезков спецификация не оговаривает , то здесь действует общее ограничение в 1024 узла . Существ уют также и другие причины , кроме наличия указанных в стандартах ограниче ний , по которым число узлов в сет и Ethern et обычно не превосходит несколь ких десятков . Эти причины лежат в самом принципе разделения во времени одного канала передачи данных между всеми узлами сети . При подключении к такому канал у каждый узел пользуется его пропускн ой способностью - 10 Мб /с - в т еч ение только некоторой доли общего вре мени работы сети . Соответственно , на уз ел приходится эта же доля пропускной способности канала . Даже если упрощен но считать , что все узлы получают равные доли времени работы канала и непроизводительные потери времени отсутствуют , то при наличии в сети N узлов на один узел приходитс я только 10/N Мб /с пропускной способности . Очевидно , что при больших значениях N пропускная с пособность , выделяемая каждому узлу , оказыва ется настолько малой величиной , что но рмальная работа приложений и пользов ателей становится невозможной - задержки дос тупа к сетевым ресурсам превышают тай м-ауты приложений , а пользователи просто отказываются так долго ждать отклика сети . Случайный характер алгоритма доступа к среде передачи данных , принятый в технологии Ethernet, усугубляет ситуацию . Если запросы на доступ к среде генерируются узлами в случайные моме нты времени , то при большой их ин тенсивности вероятность возникновения коллизий также возрастает и приводит к н еэффективному использованию кана л а : время обнаружения коллизии и время ее обработки составляют непроизводительны е затраты . Доля времени , в течение которого канал предоставляется в распор яжение конкретному узлу , становится еще меньше . Экспоненциальный рост задержек при увеличении числа уз лов очень х арактерен как для технологии Ethernet, так и для других технологий локальных сете й , основанных на разделении каналов во времени - Token Ring, FDDI, 100VG-AnyLAN. До недавнего времени в локальных сетях редко использовались мультимедийные приложе ния , перекачивающие большие файлы данных , нередко состоящие из нескольких десятков мегабайт . Приложения же , работающие с алфавитно-цифровой информацие й , не создавали значительного трафика . Поэтому долгое время для сегментов Ethernet было действительным эм п ирическое правило - в разделяемом сегменте не должно быть больше 30 узлов . Теперь с итуация изменилась и нередко 3-4 компьютера полностью за гружают сегмент Ethernet с его максимальной пропускной способностью в 10 Мб /с или же 14880 кадров в секунду . Более у ниверсальным критерием загруженности сегмента Ethernet по сравнению с общим количеством узлов является сум марная нагрузка на сегмент , создаваемая его узлами . Если каждый узел генери рует в среднем m i кадров в секунду для пе редачи по сети , то средняя суммарн ая нагрузка на сеть будет со ставлять S i m i кадров в секунду . Известно , что при отсутствии коллизий , то есть при самом благопр иятном разбросе запросов на передачу кадров во времени , сегмент Ethernet может пер едать не больше 14880 кадров в секунду (для самых коротких по стандарту кадров в 64 байта ). Поэтому , если п ринять эту величину за единицу , то отношение S i m i /14880 будет характеризовать степень использования канала , называемый также коэффициентом загрузки . Зависимость времени ожидания доступа к сети от коэффициента загрузк и гораздо меньше зависит от интенсивн ости трафика каждого узла , поэтому эту величину удобно использовать для оце нки пропускной способности сети , состоящей из произвольного числа узлов . Имитаци онное моделирование сети Ethernet и исследо в ание ее работы с помощь ю анализаторов протоколов показали , что при коэффициенте загрузки в районе 0.3 - 0.5 начинается быстрый рост числа коллизи й и соответственно времени ожидания д оступа . Поэтому во многих системах упр авления сетями пороговая граница дл я индикатора коэффициента загруз ки по умолчанию устанавливается на ве личину 0.3. Ограничения , связанные с возникающими коллизиями и большим временем ожидан ия доступа при значительной загрузке разделяемого сегмента , чаще всего оказывают ся более серьезными , чем ограничение на максимальное количество узлов , опр еделенное в стандарте из соображений устойчивой передачи электрических сигналов в кабелях . Технология Ethernet была выбрана в качес тве примера при демонстрации ограничений , присущих технологиям локальны х с етей , так как в этой технологии о граничения проявляются наиболее ярко , а их причины достаточно очевидны . Однако подобные ограничения присущи и всем остальным технологиям локальных сетей , так как они опираются на использов ание среды передачи данных как о дного разделяемого ресурса . Кольца Token Ring и FDDI также могут использоваться узлами сети только в режиме разделяемого ресурса . Отличие от канала Ethernet здесь состоит только в том , что маркерный метод доступа определяет детерминированную очередность п р едоставления д оступа к кольцу , но по-прежнему при предоставлении доступа одного узла к кольцу все остальные узлы не могут передавать свои кадры и должны ждать , пока владеющий правом доступа у зел не завершит свою передачу . Как и в технологии Ethernet, в те хнологиях Token Ring, FDDI, Fast Ethernet и 100VG-AnyLAN также определен ы максимальные длины отдельных физических сегментов кабеля и ограничения на максимальный диаметр сети и максимально е количество в ней узлов . Эти огр аничения несколько менее стеснитель н ы , чем у технологии Ethernet, но так же могут быть серьезным препятствием при создании крупной сети . Особенно же быстро может проявить ся ограничение , связанное с коэффициентом загрузки общей среды передачи данных . Хотя метод маркерного доступа , исполь зуемы й в технологиях Token Ring и FDDI, или метод приоритетных требований технологии 100VG-AnyLAN позволяют работать с более загруженн ыми средами , все равно отличия эти только количественные - резкий рост време ни ожидания начинается в таких сетях при больших к о эффициентах загрузки , где-то в районе 60% - 70%. Качественный характер нарастания времени ожидания доступа и в этих технологиях тот же , и он не может быть при нципиально иным , когда общая среда пер едачи данных разделяется во времени м ежду компьютерами сети. Общее ограничение локальных сетей , построенных только с использованием пов торителей и концентраторов , состоит в том , что общая производительность такой сети всегда фиксирована и равна ма ксимальной производительности используемого прот окола . И эту произво дительность мо жно повысить только перейдя к другой технологии , что связано с дорогостоящ ей заменой всего оборудования . Рассмотренные ограничения являются пла той за преимущества , которые дает испо льзование разделяемых каналов в локальных сетях . Эти преимущ ества существен ны , недаром технологии такого типа сущ ествуют уже около 20 лет . К преимуществам нужно отнести в первую очередь : · простоту топологии сети ; · гарантию доставки кадра адресату при соблюдении ограничений стандарта и корректно работающей апп аратуре ; · простоту протоколов , обеспечившую низкую стоимость сетевых а даптеров , повторителей и концентраторов ; Однако начав шийся процесс вытеснения повторителей и концентраторов коммутаторами говорит о том , что приоритеты изменились , и за повышение обще й пропускной способно сти сети пользователи готовы пойти на издержки , связанные с приобретением к оммутаторов вместо концентраторов .
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Представьте себе: 1942 год. Фашисты на Украине. А граждане России-СССР усиленно меняют рубли на имперские дойчмарки, и наше Правительство, защищая принципы свободы и демократии, всемерно этому содействует, усиленно расходуя золото-валютные резервы страны. Вопрос, кто бы победил в войне с Германией в этом случае?
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

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

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru