Поиск ассоциативных правил. Алгоритм 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
  • Имя атрибута

    Описание

    m_numRandRules

    количество правил для вычисления априорной оценки

    m_numIntervals

    количество интервалов для вычисления априорной оценки

    • class TDMPredictiveAprioriTid
    • Секция 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

      требуемое значение точности для 'выходного' правила

      m_best

      TArrayList

      n лучших правил

      m_bestChanged

      boolean

      изменился ли набор из n лучших правил

      m_count

      integer

      m_priorEstimator

      TDMPriorEstimation

      априорная оценка

      • Секция public
      • Методы

        Имя метода

        Используемые значения

        Описание

        Возвращаемое значение

        constructor

        Create

        i1:integer

        создание объекта класса

        procedure

        buildModel

        instances : TDMInstances

        Построение дерева хеширования

        function

        toStrings

        • instances: TDMInstances;
        • Podd : real;

        Toch : real

        вывод на экран результата работы алгоритма

        TStrings

        procedure

        setNumRules

        v : integer

        задает максимальное количество правил для вывода

        procedure

        resetOptions

        i1:integer

        задает размер создаваемой модели

        destructor

        Destroy

        деструктор класса

        • Секция private
        • Методы

          Имя метода

          Используемые значения

          Описание

          procedure

          findLargeItemSets

          -

          поиск наборов

          procedure

          findRulesQuickly

          -

          поиск правил

          • 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
          ...

Подобные документы

  • Разработка набора взаимосвязанных классов для реализации 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.2016

  • APRIORI - масштабируемый алгоритм поиска ассоциативных правил. Создание официального информационного портала для студенческого совета УлГУ "Династия". Принципы построение и создания хранилища данных. Перенос информационного портала на сервер 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.