Поиск ассоциативных правил. Алгоритм AprioriTid
Разработка модуля, выполняющего поиск ассоциативных правил по алгоритму AprioriTid. Описание алгоритма и составление листинга программы. Создание простого и понятного пользовательского интерфейса пользователя. Тестовый пример разработанного продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.11.2013 |
Размер файла | 483,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Государственное образовательное учреждение
высшего профессионального образования
«Омский государственный технический университет»
Кафедра «Автоматизированные системы обработки информации и управления»
Курсовой проект
на тему: «Поиск ассоциативных правил. Алгоритм AprioriTid»
по дисциплине: «Компьютерные системы поддержки принятия решений»
Сургут 2013
Содержание
- 1. Постановка задачи
- 2. Описание алгоритма
- 3. Описание классов
- 4. Текст программы
- 5. Пользовательский интерфейс программы
- 6. Тестовый пример
- Вывод
- 1. Постановка задачи
- Используя среду разработки программных приложений Delphi 7.0 и заданные классы, написать модуль экспертной системы, реализующий алгоритм AprioriTid. Программа должна иметь удобный пользовательский интерфейс и обеспечивать действия пользователя в отдельном окне.
- Данные для анализа должны храниться в объекте класса TDMInstances.
- Работа с данными, выбор переменных и их значений осуществляются в окне, отдельном от окна главной формы экспертной системы.
- 2. Описание алгоритма
- Алгоритм AprioriTid определяет часто встречающиеся наборы за несколько этапов. На i-м этапе определяются все часто встречающиеся i-элементные наборы. Каждый этап состоит из двух шагов: формирование кандидатов и подсчета поддержки кандидатов.
- Рассмотрим i-й этап. На шаге формирования кандидатов алгоритм создает множество кандидатов из i-элементных наборов, чья поддержка пока не вычисляется. На шаге подсчета кандидатов алгоритм сканирует множество транзакций, вычисляя поддержку наборов-кандидатов. После сканирования отбрасываются кандидаты, поддержка которых меньше определенного пользователем минимума, и сохраняются только часто встречающиеся i-элементные наборы. Во время 1-го этапа выбранное множество наборов кандидатов содержит все 1-элементные частые наборы. Алгоритм вычисляет их поддержку во время шага подсчета кандидатов.
- Описанный алгоритм можно записать в виде следующего псевдокода:
- алгоритм aprioritid программа
- Опишем обозначения используемые в алгоритме:
- § Lk - множество k-элементных частых наборов, чья поддержка не менье заданной пользователем. Каждый член множества имеет набор упорядоченных (ij < ip, если j < p) элементов F и значение поддержки набора SuppF > Suppmin:
- § Ck - множество кандидатов k-элементных наборов потенциально частых. Каждый член множества имеет набор упорядоченных (ij < ip, если j < p) элементов F и значение поддержки набора Supp.
- Опишем данный алгоритм по шагам:
- Шаг 1. Присвоить k=1 и выполнить отбор всех 1-элементных наборов, у которых поддержка больше минимально заданной пользователем.
- Шаг 2. k = k+1.
- Шаг 3. Если не удается создавать k-элементные наборы, то завершить алгоритм, иначе выполнить следующий шаг.
- Шаг 4. Создать множество k-элементных наборов кандидатов в частые наборы. Для этого необходимо объединить в k-элементные кандидаты (k-1) - элементные частые наборы. Каждый кандидат сСk будет формироваться путем добавления к (k-1)- элементному частому набору - p элемента из другого (k-1)- элементного частого набора - q. Причем добавляется последний элемент набора q, который по порядку выше, чем последний элемент набора p (p.itemk-1 < q.itemk-1). При этом первые все k-2 элемента обоих наборов одинаковы (p.item1 = q.item1, p.item2 = q.item2, …,
- p.itemk-2 = q.itemk-2).
- Это может быть записано в виде следующего SQL-подобного запроса.
- Шаг 5. Для каждой транзакции Т из множества D выбрать кандидатов С1 из множества Сk, присутствующих в транзакции Т. Для каждого набора из построенного множества Сk удалить набор, если хотя бы одно из его (k-1) множеств не является часто встречающимся, т.е. отсутствует во множестве Lk-1. Это можно записать в виде следующего псевдокода:
- Шаг 6. Для каждого кандидата из множества Ck увеличить значение поддержки на единицу.
- Шаг 7. Выбрать только кандидатов Lk из множества Сk, у которых значение поддержки больше заданной пользователем Suppmin. Вернуться к шагу 2.
- Результатом работы алгоритма является объединение всех множеств Lk для всех k.
- 3. Описание классов
- unit PredictiveAprioriTid
- const
- class TDMPredictiveAprioriTid
- Секция protected
- Секция public
- instances: TDMInstances;
- Podd : real;
- Секция private
- 4. Текст программы
- unit PredictiveAprioriTid;
- interface
- uses
- Classes, FastVector, Instances, uContainers, dmmTypes, PriorEstimation,
- SysUtils, ItemSet, dmmConstants, RuleGeneration, RuleItem, DoubleObject,
- uConsts, associator, dmm, Windows;
- const
- //количество правил для вычисления априорной оценки
- m_numRandRules = 100;
- //количество интервалов для вычисления априорной оценки
- m_numIntervals = 10;
- type TDMPredictiveApriori = class (TDMAssociator)
- protected
- //минимальная поддержка
- m_premiseCount : integer;
- //требуемое количество правил
- m_numRules : integer;
- //наборы
- m_Ls : TDMFastVector;
- //теже наборы в хэш таблице
- m_hashtables : TDMFastVector;
- //набор правил
- m_allTheRules : TDMFastVectorArray;
- //вектора на основе которых генерируются правила
- m_instances : TDMInstances ;
- //хэш таблица с априорными вероятностями
- m_priors : TStringHashtable ;
- //середина интервалов для оаприорной оценки
- m_midPoints : DArray;
- //требуемое значение точности для 'выходного' правила
- m_expectation : double;
- //n лучших правил
- m_best : TArrayList;
- //изменился ли набор из n лучших правил
- m_bestChanged : boolean;
- m_count : integer;
- //априорная оценка
- m_priorEstimator : TDMPriorEstimation;
- public
- //создание объекта класса TDMPredictiveApriori
- constructor Create(i1:integer);
- //построение дерева хеширования
- procedure buildModel(instances : TDMInstances ); override;
- //вывод на экран результата работы алгоритма
- function toStrings(instances : TDMInstances; Podd : real; Toch : real; number : integer) : TStrings;
- procedure setNumRules(v : integer);
- procedure resetOptions(i1:integer);
- destructor Destroy;override;
- private
- procedure findLargeItemSets(index : integer);
- procedure findRulesQuickly();
- end;
- implementation
- constructor TDMPredictiveApriori.Create(i1:integer);
- begin
- m_Ls:=nil;
- m_hashtables:=nil;
- m_allTheRules := nil;
- m_instances:=nil;
- m_priors:=nil ;
- m_midPoints :=nil;
- m_best:=nil;
- m_best:=nil;
- resetOptions(i1);
- end;
- procedure TDMPredictiveApriori.resetOptions(i1:integer);
- begin
- // m_numRules := i1;
- m_numRules := 1000;
- m_premiseCount := 1;
- m_best := TArrayList.Create(m_numRules-5);
- m_bestChanged := false;
- m_expectation := 0;
- m_count := 1;
- end;
- procedure TDMPredictiveApriori.findLargeItemSets(index : integer);
- var
- kMinusOneSets, kSets : TDMFastVector;
- hashtable : TStringHashtable;
- currentItemSets : TDMFastVector;
- i,j : integer;
- begin
- kSets := TDMFastVector.Create();
- i := 0;
- //наборы длины 1
- if(index = 1) then
- begin
- kSets := ItemSet.getSingletons(m_instances);
- ItemSet.upDateCounters(kSets, m_instances);
- kSets := ItemSet.deleteItemSets(kSets, m_premiseCount,IMAX_VALUE);
- if (kSets.size() = 0) then
- begin
- FreeAndNil(kSets);
- exit;
- end;
- m_Ls.addElement(kSets);
- end;
- //длина > 1
- if(index >1) then
- begin
- if(m_Ls.size() > 0) then
- kSets := m_Ls.lastElement() as TDMFastVector;
- m_Ls.removeAllElements();
- i := index-2;
- kMinusOneSets := kSets;
- kSets := ItemSet.mergeAllItemSets(kMinusOneSets, i, m_instances.numInstances());
- hashtable := ItemSet.getHashtable(kMinusOneSets, kMinusOneSets.size());
- kMinusOneSets.elementMemoryManagement(false);
- FreeAndNil(kMinusOneSets);
- m_hashtables.addElement(hashtable);
- kSets := ItemSet.pruneItemSets(kSets, hashtable);
- ItemSet.upDateCounters(kSets, m_instances);
- kSets := ItemSet.deleteItemSets(kSets, m_premiseCount,IMAX_VALUE);
- if(kSets.size() = 0) then
- begin
- FreeAnDNil(kSets);
- exit;
- end;
- m_Ls.addElement(kSets);
- end;
- end;
- procedure TDMPredictiveApriori.findRulesQuickly();
- var
- rules : TDMFastVectorArray;
- currentItemSet : TDMRuleGeneration;
- j : integer;
- currentItemSets : TDMFastVector;
- enumItemSets : TDMFastVectorEnumeration;
- bestFirst : TDMRuleItem;
- PTDMRuleItem : ^TDMRuleItem;
- plist : PPointerItemList;
- begin
- j := 0;
- while (j < m_Ls.size()) do
- begin
- currentItemSets := m_Ls.elementAt(j) as TDMFastVector;
- enumItemSets := TDMFastVectorEnumeration.Create(currentItemSets);
- while (enumItemSets.hasMoreElements()) do
- begin
- if (terminated) then
- begin
- ExitThread(1);
- destroy;
- end;
- currentItemSet := TDMRuleGeneration.Create(enumItemSets.nextElement()as TDMItemSet);
- m_best := currentItemSet.generateRules(m_numRules, m_midPoints,m_priors,m_expectation,
- m_instances,m_best,m_count);
- m_count := currentItemSet.m_count;
- if(not m_bestChanged) and (currentItemSet.m_change) then
- m_bestChanged := true;
- if(m_best.Count > 0) then
- begin
- plist := m_best.ItemList;
- bestFirst:= plist^[0];
- m_expectation := (bestFirst).accuracy();
- end
- else m_expectation := 0;
- FreeAndNil(currentItemSet);
- end;
- FreeAndNil(enumItemSets);
- inc(j);
- end;
- end;
- procedure TDMPredictiveApriori.buildModel(instances : TDMInstances );
- var
- temp,exactNumber : integer;
- i,k : integer;
- PTDMRuleItem : ^TDMRuleItem;
- lastBest : TDMRuleItem;
- kSets : TDMFastVector;
- plist : PPointerItemList;
- begin
- temp := m_premiseCount;
- exactNumber := m_numRules-5;
- if (instances.checkForStringAttributes()) then
- raise Exception.Create('Количественные аттрибуты не поддерживаются');
- m_instances := TDMInstances.Create(instances);
- m_instances.setClassIndex(m_instances.numAttributes()-1);
- //априорная оценка
- m_priorEstimator := TDMPriorEstimation.Create(m_instances,m_numRandRules,m_numIntervals,false);
- m_priors := m_priorEstimator.estimatePrior();
- m_midPoints := m_priorEstimator.getMidPoints();
- m_Ls := TDMFastVector.Create();
- m_hashtables := TDMFastVector.Create();
- i := 1;
- while (i < m_instances.numAttributes()) do
- begin
- m_bestChanged := false;
- if (terminated) then
- begin
- ExitThread(1);
- destroy;
- end;
- // поиск наборов
- findLargeItemSets(i);
- // поиск правил
- findRulesQuickly();
- if(m_bestChanged) then
- begin
- temp := m_premiseCount;
- while(RuleGeneration.expectation(m_premiseCount, m_premiseCount,m_midPoints,m_priors) <= m_expectation) do
- begin
- inc(m_premiseCount);
- if(m_premiseCount > m_instances.numInstances()) then
- break;
- end;
- end;
- if(m_premiseCount > m_instances.numInstances()) then
- begin
- SetLength(m_allTheRules,3);
- m_allTheRules[0] := TDMFastVector.Create();
- m_allTheRules[1] := TDMFastVector.Create();
- m_allTheRules[2] := TDMFastVector.Create();
- k := 0;
- while(m_best.count>0) and (exactNumber > 0) do
- begin
- plist := m_best.itemList;
- PTDMRuleItem := plist^[m_best.Count-1];
- lastBest := PTDMRuleItem^;
- m_allTheRules[0].insertElementAt(lastBest.premise()as TDMItemSet,k);
- m_allTheRules[1].insertElementAt(lastBest.consequence() as TDMItemSet,k);
- m_allTheRules[2].insertElementAt(TDMDoubleObject.Create(lastBest.accuracy()),k);
- m_best.removeAt(m_best.count-1);
- inc(k);
- dec(exactNumber);
- lastBest.OwnValuesCons := false;
- FreeAndNil(lastBest);
- end;
- exit;
- end;
- if(temp <> m_premiseCount) and (m_Ls.size() > 0) then
- begin
- kSets := m_Ls.lastElement() as TDMFastVector;
- m_Ls.removeElementAt(m_Ls.size()-1);
- kSets := ItemSet.deleteItemSets(kSets, m_premiseCount,IMAX_VALUE);
- m_Ls.addElement(kSets);
- end;
- inc(i);
- end;
- SetLength(m_allTheRules,3);
- m_allTheRules[0] := TDMFastVector.Create();
- m_allTheRules[1] := TDMFastVector.Create();
- m_allTheRules[2] := TDMFastVector.Create();
- k := 0;
- while(m_best.count>0) and (exactNumber > 0) do
- begin
- plist := m_best.itemList;
- lastBest:= plist^[m_best.Count-1];
- m_allTheRules[0].insertElementAt(lastBest.premise() as TDMItemSet,k);
- m_allTheRules[1].insertElementAt(lastBest.consequence() as TDMItemSet,k);
- m_allTheRules[2].insertElementAt(TDMDoubleObject.Create(lastBest.accuracy()),k);
- m_best.removeAt(m_best.count-1);
- inc(k);
- dec(exactNumber);
- lastBest.OwnValuesCons := false;
- FreeAndNil(lastBest);
- end;
- end;
- function TDMPredictiveApriori.toStrings(instances : TDMInstances;
- Podd : real; Toch : real;
- number : integer) : TStrings;
- var
- strtext : AnsiString;
- text : TStrings;
- i : integer;
- tochn : AnsiString;
- podder : String;
- TochnReal : real;
- PodderReal : real;
- val : integer;
- begin
- text := TStringList.Create;
- text.Clear;
- if (m_allTheRules[0].size() = 0) then
- begin
- text.Add('наборы не найдены');
- result:=text;
- exit;
- end;
- text.Add(' Apriori');
- text.Add('==========');
- i := 0;
- val := 1;
- while ((i < m_allTheRules[0].size()) and (val<=number)) do
- begin
- Str((((m_allTheRules[1].elementAt(i)) as TDMItemSet).m_counter
- /instances.numInstances) : 4 : 5, podder);
- PodderReal:=(((m_allTheRules[1].elementAt(i)) as TDMItemSet).m_counter
- /instances.numInstances);
- Str(((m_allTheRules[2].elementAt(i) as TDMDoubleObject).doubleValue) :4 : 4, tochn);
- TochnReal:=((m_allTheRules[2].elementAt(i) as TDMDoubleObject).doubleValue);
- if ((TochnReal >= Toch) and (PodderReal >= Podd)) then
- begin
- strtext:='';
- strtext := IntToStr(val)+')' + ' . ' + ((m_allTheRules[0].elementAt(i)) as TDMItemSet).
- toString(m_instances) + ' ==> ' + ((m_allTheRules[1].elementAt(i)) as TDMItemSet).
- toString(m_instances) +' точность:(';
- text.Add(strtext + tochn+')');
- text.Add(' поддержка ' + podder);
- inc(val);
- end;
- inc(i);
- end;
- result := text;
- end;
- procedure TDMPredictiveApriori.setNumRules(v : integer);
- begin
- m_numRules := v+5;
- end;
- destructor TDMPredictiveApriori.Destroy;
- var i,j :integer;
- first :TDMItemSet;
- curItemSets : TDMFastVector;
- curItemSetsHashtables : TStringHashtable;
- begin
- if(m_Ls <> nil) then
- begin
- j := 0;
- while (j < m_Ls.size()) do
- begin
- curItemSets := m_Ls.elementAt(j) as TDMFastVector;
- curItemSets.removeAllElements();
- inc(j);
- end;
- m_Ls.removeAllElements();
- m_Ls := nil;
- end;
- if(m_hashtables <> nil) then
- begin
- j := 0;
- while (j < m_hashtables.size()) do
- begin
- curItemSetsHashtables := m_hashtables.elementAt(j) as TStringHashtable;
- curItemSetsHashtables.OwnValues := true;
- FreeAndNil(curItemSetsHashtables);
- inc(j);
- end;
- m_hashtables.removeAllElements();
- m_hashtables := nil;
- end;
- FreeAndNil(m_instances);
- //удаление правил
- if(length(m_allTheRules)<>0)then
- begin
- for i:=0 to m_allTheRules[0].size - 1 do
- begin
- first := m_allTheRules[0].elementAt(i) as TDMItemSet;
- first.OwnValues := true;
- end;
- m_allTheRules[0].removeAndClearAllElements();
- m_allTheRules[1].removeAndClearAllElements();
- m_allTheRules[2].removeAndClearAllElements();
- FreeandNil(m_allTheRules[0]);
- FreeandNil(m_allTheRules[1]);
- FreeandNil(m_allTheRules[2]);
- setlength(m_allTheRules,0);
- end;
- m_priors.OwnValues:=true;
- FreeAndNil(m_priors);
- FreeAndNil(m_best);
- FreeAndNil(m_priorEstimator);
- m_midPoints :=nil;
- end;
- end.
- 5. Пользовательский интерфейс программы
- Все свои действия пользователь выполняет в окне, показанном на рис.1.
- Рис.1.
- Пользователь задает минимальные значения поддержки и достоверности, а также количество лучших правил. Программа выводит все правила, поддержка и достоверность которых больше заданных пользователем. Количество выводимых правил может быть равным или меньшим заданного при запуске алгоритма. Лучшими считаются правила, с наибольшим значением достоверности.
- После нажатия кнопки «Начало работы» происходит обработка введенных данных. В итоге получается набор правил, которые в специально предназначенном для этого поле.
- Для сохранения данных имеется кнопка «Сохранить».
- Для завершения работы с алгоритмом специально предусмотрена кнопка «Выход».
- 6. Тестовый пример
- Для теста программы загрузим файл
- В этом файле имеются следующие поля:
- - возраст
- - диагноз
- - наличие астигматизма
- - эффект от линз
- - вид линз
- Данные для выборки:
- Количество лучших правил - 10
- Минимальная поддержка - 0,2
- Минимальная достоверность - 0,3
- Результат работы алгоритма:
- PredictiveAprioriTid
- ===================
- 1) . tear-prod-rate=reduced 12 ==> contact-lenses=none 12 точность:(0.9452)
- поддержка 0.50000
- 2) . contact-lenses=soft 5 ==> astigmatism=no tear-prod-rate=normal 5 точность:(0.9004)
- поддержка 0.20833
- 3) . spectacle-prescrip=myope contact-lenses=none 7 ==> tear-prod-rate=reduced 6 точность:(0.7984)
- поддержка 0.25000
- 4) . astigmatism=no contact-lenses=none 7 ==> tear-prod-rate=reduced 6 точность:(0.7984)
- поддержка 0.25000
- 5) . spectacle-prescrip=hypermetrope astigmatism=yes 6 ==> contact-lenses=none 5 точность:(0.7468)
- поддержка 0.20833
- 6) . astigmatism=no tear-prod-rate=normal 6 ==> contact-lenses=soft 5 точность:(0.7468)
- поддержка 0.20833
- 7) . contact-lenses=none 15 ==> tear-prod-rate=reduced 12 точность:(0.7303)
- поддержка 0.50000
- 8) . age=presbyopic 8 ==> contact-lenses=none 6 точность:(0.6306)
- поддержка 0.25000
- 9) . spectacle-prescrip=hypermetrope 12 ==> contact-lenses=none 8 точность:(0.5641)
- поддержка 0.33333
- 10) . astigmatism=yes 12 ==> contact-lenses=none 8 точность:(0.5641)
- поддержка 0.33333
- Вывод
- В результате выполнения курсовой работы был получен модуль, выполняющий поиск ассоциативных правил по алгоритму AprioriTid. Программа имеет простой и понятный пользовательский интерфейс и корректно выполняет необходимые действия.
- Данный модуль взаимодействует с ядром следующим образом: при запуске ядра в модуль загружаются данные типа Instances, с которыми впоследствии и работает наша программа.
- Кроме того, в ходе выполнения курсовой работы нами были получены навыки объектно-ориентированного программирования в среде Dephi 7.
- Размещено на Allbest.ru
Имя атрибута |
Описание |
|
m_numRandRules |
количество правил для вычисления априорной оценки |
|
m_numIntervals |
количество интервалов для вычисления априорной оценки |
Имя атрибута |
Тип атрибута |
Описание |
|
m_premiseCount |
integer |
минимальная поддержка |
|
m_numRules |
integer |
требуемое количество правил |
|
m_Ls |
TDMFastVector |
наборы |
|
m_hashtables |
TDMFastVector |
теже наборы в хэш таблице |
|
m_allTheRules |
TDMFastVectorArray |
набор правил |
|
m_instances |
TDMInstances |
вектора на основе которых генерируются правила |
|
m_priors |
TStringHashtable |
хэш таблица с априорными вероятностями |
|
m_midPoints |
DArray |
середина интервалов для априорной оценки |
|
m_expectation |
double |
требуемое значение точности для 'выходного' правила |
|
m_best |
TArrayList |
n лучших правил |
|
m_bestChanged |
boolean |
изменился ли набор из n лучших правил |
|
m_count |
integer |
||
m_priorEstimator |
TDMPriorEstimation |
априорная оценка |
Методы |
Имя метода |
Используемые значения |
Описание |
Возвращаемое значение |
|
constructor |
Create |
i1:integer |
создание объекта класса |
||
procedure |
buildModel |
instances : TDMInstances |
Построение дерева хеширования |
||
function |
toStrings |
Toch : real |
вывод на экран результата работы алгоритма |
TStrings |
|
procedure |
setNumRules |
v : integer |
задает максимальное количество правил для вывода |
||
procedure |
resetOptions |
i1:integer |
задает размер создаваемой модели |
||
destructor |
Destroy |
деструктор класса |
Методы |
Имя метода |
Используемые значения |
Описание |
|
procedure |
findLargeItemSets |
- |
поиск наборов |
|
procedure |
findRulesQuickly |
- |
поиск правил |
Подобные документы
Разработка набора взаимосвязанных классов для реализации Hash-поиска как специализированного контейнера. Поиск с использованием Хэш-функций. Объектная технология. Описание пользовательского интерфейса. Листинг и описание всех классов библиотеки на DP.
курсовая работа [231,2 K], добавлен 15.10.2008Создание программы на языке программирования Visual Prolog. Разработка математической модели. Функциональные характеристики программы: оптимальный маршрут для такси. Интерфейс пользователя, руководство программиста, функциональная схема, тестовый пример.
курсовая работа [515,4 K], добавлен 18.10.2010Практическое обоснование выгодности использования web-модуля "Расширенный поиск по сайту". Схема отображения процесса ввода и запроса информации. Описание алгоритма и модель решения задачи. Структура и характеристика базы данных расширенного поиска.
дипломная работа [2,4 M], добавлен 19.01.2017Состав DЕLPHI проекта. Алгоритм сортировки вектора. Метод сортировки файла. Сценарий интерфейсного диалога пользователя с программой. Поиск и вычисление времени, затраченного на поиск и сортировку. Исходный текст модуля Project.dpr, MainForm.pas.
курсовая работа [827,4 K], добавлен 07.11.2010Классификация задач DataMining. Создание отчетов и итогов. Возможности Data Miner в Statistica. Задача классификации, кластеризации и регрессии. Средства анализа Statistica Data Miner. Суть задачи поиск ассоциативных правил. Анализ предикторов выживания.
курсовая работа [3,2 M], добавлен 19.05.2011Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.
курсовая работа [1,4 M], добавлен 16.03.2012Понятие алгоритма как набора инструкций, описывающего порядок действий. Поиск в ширину - метод обхода графа и поиска пути в нем. Пример работы алгоритма поиска в ширину, его неформальное и формальное описание. Реализация с помощью структуры "очередь".
курсовая работа [684,8 K], добавлен 05.04.2015Разработка алгоритма, выполняющего поиск наилучшего решения на каждый ход в игре "крестики-нолики" (используя минимальный алгоритм). Обоснование выбора программных средств для решения задачи. Блок-схема интеллектуального алгоритма реализации программы.
контрольная работа [380,0 K], добавлен 28.04.2014Описание использованных структур данных и разработка программы, обеспечивающей сжатие данных по алгоритму LZ77 с пошаговой визуализацией. Описание процедур, функций, структуры приложения и интерфейса пользователя. Тест и анализ работы алгоритма LZ77.
курсовая работа [537,9 K], добавлен 28.06.2011Алгоритмическое представление и описание правил игры "Эволюция". Построение диаграммы прецедентов. Разработка графического интерфейса пользователя. Реализация интерфейса в среде Unity. Структура файла сохранения игры. Проектирование поведения компьютера.
дипломная работа [3,3 M], добавлен 18.02.2017Анализ правил выбора хода на шахматной доске К. Шеннона. Характеристика программного модуля искусственного интеллекта для игры в шахматы. Контроль времени, поиск лучшего хода в шахматных алгоритмах. Разработка программы для игры с компьютерным оппонентом.
дипломная работа [3,7 M], добавлен 07.07.2012Этапы работы генетического алгоритма, область его применения. Структура данных, генерация первоначальной популяции. Алгоритм кроссинговера - поиск локальных оптимумов. Селекция особей в популяции. Техническое описание программы и руководство пользователя.
реферат [1014,2 K], добавлен 14.01.2016APRIORI - масштабируемый алгоритм поиска ассоциативных правил. Создание официального информационного портала для студенческого совета УлГУ "Династия". Принципы построение и создания хранилища данных. Перенос информационного портала на сервер ulsu.ru.
курсовая работа [1,5 M], добавлен 21.12.2015Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Разработка программы для осуществления приведения КС-грамматики к нормальному виду. Особенности преобразования грамматик. Создание алгоритма удаления бесплодных и недостижимых символов, устранения правил с пустой правой частью. Исключение цепных правил.
курсовая работа [1,5 M], добавлен 06.01.2012Описание функциональных возможностей технологии Data Mining как процессов обнаружения неизвестных данных. Изучение систем вывода ассоциативных правил и механизмов нейросетевых алгоритмов. Описание алгоритмов кластеризации и сфер применения Data Mining.
контрольная работа [208,4 K], добавлен 14.06.2013Составление математической модели расписания в школе. Назначение и область применения программного продукта. Обоснование выбора инструментальных средств. Описание разработки, алгоритмов и методов решения, форматов данных и пользовательского интерфейса.
курсовая работа [1,6 M], добавлен 18.01.2012Разработка эскизного и технического проекта программы идентификации личности по отпечатку. Назначение и область применения, описание алгоритма, входных и выходных данных. Выбор состава технических и программных средств. Тестирование и внедрение продукта.
курсовая работа [61,9 K], добавлен 12.05.2015Требования к аппаратному и программному обеспечению, требуемому для разработки программного модуля. Критерии приемлемости разрабатываемого программного продукта. Разработка удобного пользовательского интерфейса программы. Алгоритм и листинг программы.
курсовая работа [2,6 M], добавлен 23.11.2011Назначение программного модуля (базы данных). Разработка информационной базы данных для колледжа. Поиск пользователями информации о преподавателях и дисциплинах. Анализ входной и выходной информации. Разработка алгоритма работы программы-приложения.
реферат [513,1 K], добавлен 22.10.2012