Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Описание функций. В тексте алгоритма использовано следующее обозначение:






В тексте алгоритма использовано следующее обозначение:

< выходные данные> = < название функции > (< входные данные>).

 

Функция Описание
сформировать вариант расстановки границ периодов динамики Для “ номер варианта расстановки границ ” случайным образом сгенерировать возрастающую последовательность натуральных чисел в количестве “ ЧПД ” из интервала (0, самый последний момент наблюдения признака среди всех примеров заболевания).
сформировать ОКП заболевания по признаку На основе “ примеры заболевания ” по определяющим соотношениям сформировать значения интересных параметров “ значение для периода ”, “нижняя граница ”, “ верхняя граница ” для “ вариант расстановки границ ”.
решить задачу диагностики по признаку На основе контрпримеров заболевания определить количество ИБ, которое отвергает “ ОКП заболевания по признаку ” (алгоритм решения этой задачи представлен ниже).
сократить множество ОКП заболевания по признаку Для текущего заболевания среди “ все ОКП заболевания по признаку ” осуществить выбор таких из них, которые отвергают максимум ИБ контрпримеров этого заболевания. В случае, когда таких ОКП находится несколько, они становятся конкурирующими. Остальные ОКП удаляются.
скомбинировать ОКП заболевания по всем признакам, входящим в его КК Для текущего заболевания среди “ все ОКП заболевания по всем признакам ” найти наилучшую их комбинацию, отвергающую максимум ИБ контрпримеров этого заболевания.

Процедура “решить задачу диагностики по признаку”

 

Используются следующие структуры данных:

· битовый массив – массив с числом элементов, равным количеству ИБ контрпримеров заболевания. Если “ ОКП заболевания по признаку ” отвергает некоторую ИБ из контрпримеров этого заболевания, то соответствующий элемент массива получает значение 1, иначе – 0.

· последовательность – массив с числом элементов, равным количеству МН в отдельно взятой ИБ из контрпримеров заболевания. Для каждого МН в массив записывается номер периода, в который попадает (по значению и временным границам) этот МН.

 

битовый массив = создать битовый массив
(1.. количество ИБ контрпримеров);

ДЛЯ ВСЕХ ИБ контрпримеров ВЫПОЛНЯТЬ

последовательность = создать последовательность
(1.. количество МН в ИБ);

ОТ I = 1 ДО количество МН в ИБ ВЫПОЛНЯТЬ

последовательность [I] = 0;

последовательность построена = ЛОЖЬ;

закончить обработку ИБ = ЛОЖЬ;

текущий период = 1;

текущий МН = 1;

//Проход по МН из ИБ до тех пор, пока либо не будет построена последовательность (ИБ принята), либо не будет установлено, что построить её невозможно (ИБ отвергнута)

ПОКА (текущий МН < = количество МН) И
(закончить обработку ИБ = ЛОЖЬ) ВЫПОЛНЯТЬ

результат обработки = обработать момент наблюдения
(текущий МН, текущий период);

ВЫБОР результат обработки ИЗ

0:

//Переход на следующий МН

ЕСЛИ текущий МН < количество МН

ТО текущий МН += текущий МН;

последовательность [ текущий МН ] =
текущий период;

ИНАЧЕ последовательность построена = ИСТИНА;

1:

//Откат назад на предыдущий МН или увеличение текущего периода (если МН не подходит по значению или при проверке на верхнюю границу)

ЕСЛИ текущий период < ЧПД

ТО текущий период += текущий период;

ИНАЧЕ

ПОКА (текущий МН > 1) И
(последовательность
[ текущий МН – 1] = ЧПД)

ВЫПОЛНЯТЬ текущий МН -= текущий МН;

ЕСЛИ текущий МН > 1

ТО текущий период = последовательность
[ текущий МН - 1] + 1;

текущий МН -= текущий МН;

ИНАЧЕ закончить обработку ИБ = ИСТИНА;

2:

//Откат назад на пред пред ыдущий МН (если МН не подходит при проверке на нижнюю границу)

ПОКА (текущий МН > 2) И
(последовательность [ текущий МН - 2] == ЧПД)

ВЫПОЛНЯТЬ текущий МН -= текущий МН;

ЕСЛИ текущий МН > 2

ТО текущий период = последовательность
[ текущий МН - 2] + 1;

текущий МН -= текущий МН;

ИНАЧЕ закончить обработку ИБ = ИСТИНА;

3:

//Закончить обработку ИБ

закончить обработку ИБ = ИСТИНА;

ЗАКОНЧИТЬ ВЫБОР

ЗАКОНЧИТЬ ПОКА

//Проверка, построена ли последовательность (отвергнута ли ИБ)

ЕСЛИ последовательность построена == ЛОЖЬ

ТО битовый массив [ номер ИБ ] = 1;

ЗАКОНЧИТЬ ДЛЯ ВСЕХ.


Функция “обработать момент наблюдения”

 

//Определить номер минимального периода, в который при проверке по значению и временным границам попадает значение в “ текущий МН ”, начиная с “ текущий период ” (если не попадает ни в один из периодов, то результат возвращается равным нулю).

 

минимальный период = определить период по значению в МН
(текущий МН, текущий период);

ЕСЛИ минимальный период == 0

ТОЕСЛИ последовательность [1] < ЧПД

ТО результат обработки = 1;

ИНАЧЕ результат обработки = 3;

ИНАЧЕ

//Проверка временных границ

текущий период = минимальный период;

ЕСЛИ последовательность [ текущий МН ]== 1

ТО результат по границе =
проверить верхнюю границу (1);

ИНАЧЕ

ЕСЛИ текущий МН == 1

ТО результат по границе =
проверить верхнюю границу
(2);

ЕСЛИ результат по границам == 0

ТО результат по границе =
проверить
нижнюю границу
(ИСТИНА);

ИНАЧЕ

результат по границе =
проверить верхнюю границу (3);

ЕСЛИ (последовательность
[ текущий МН ] < >
последовательность
[ текущий МН - 1])

ТО результат по границе =
проверить
нижнюю границу
(ЛОЖЬ);

результат обработки = результат по границе.

 


Функция “определить период по значению в МН”

 

//Определить “ минимальный период ”, в который попадает значение в “ текущий МН ”, начиная с “ текущий период ” (если не попадает ни в один из периодов, то результат возвращается равным нулю).

 

минимальный период = 0;

период для МН фиксирован = ЛОЖЬ;

ПОКА (текущий период < = ЧПД) И
(период для МН фиксирован = ЛОЖЬ) ВЫПОЛНЯТЬ

ЕСЛИ моменты наблюдения [2, текущий МН ] ПРИНАДЛЕЖИТ
значения для периода из БЗ (текущий период)

ТО минимальный период = текущий период;
период для МН фиксирован = ИСТИНА;

ИНАЧЕ текущий период += текущий период;

ЕСЛИ текущий период > ЧПД

ТО минимальный период = 0.

 

Функция “проверить верхнюю границу (флаг)”

 

// Возвращает 0, если проверка прошла успешно или 1 - если наоборот.

 

сумма верхних границ = 0;

ВЫБОР из флаг

1:

//Проверка МН, попавшего в первый период

ЕСЛИ моменты наблюдения [1, текущий МН ]> верхняя граница [1]

ТО результат по границе = 1

ИНАЧЕ результат по границе = 0;

2:

//Проверка самого первого МН, попавшего НЕ в первый период

ОТ I = 1 ДО текущий период ВЫПОЛНЯТЬ

сумма верхних границ = сумма верхних границ +
верхняя граница [I];

ЕСЛИ моменты наблюдения [1, текущий МН ]>
сумма верхних границ

ТО результат по границе = 1

ИНАЧЕ результат по границе = 0;

3:

//Проверка НЕ первого МН, попавшего НЕ в первый период

ОТ I = 1 ДО текущий период ВЫПОЛНЯТЬ

сумма верхних границ = сумма верхних границ +
верхняя граница [I];

ЕСЛИ моменты наблюдения [1, текущий МН ]>
сумма верхних границ

ТО результат по границе = 1

ИНАЧЕ

//Проверяем разности с предыдущими МН

сумма верхних границ = 0;

I = текущий период;

результат по границе = 0;

ПОКА (I > = 2) И (результат по границе == 0) ВЫПОЛНЯТЬ

первый = первый МН в периоде (I);

сумма верхних границ = сумма верхних границ +
верхняя граница (I);

ЕСЛИ первый < > -1

ТО

ЕСЛИ (моменты наблюдения
[1, текущий МН ] –
моменты наблюдения
[1, переменный МН ]) >
сумма верхних границ

ТО результат по границе = 1

ИНАЧЕ результат по границе = 0;

I -= I;

ЗАКОНЧИТЬ ВЫБОР.

 


Функция “проверить нижнюю границу (флаг)”

 

// Возвращает 0, если проверка прошла успешно или 2 - если наоборот.

 

сумма верхних границ = 0;

ЕСЛИ флаг == ИСТИНА

ТО //Проверка первого МН, попавшего НЕ в первый период.

ОТ J = 1 ДО текущий период ВЫПОЛНЯТЬ

сумма нижних границ = сумма нижних границ +
нижняя граница [J];

ЕСЛИ моменты наблюдения [1, текущий МН ]<
сумма нижних границ

ТО результат по границе = 2

ИНАЧЕ результат по границе = 0;

ИНАЧЕ //Проверка НЕ первого МН, попавшего НЕ в первый период.

ОТ I = 1 ДО (текущий период – 1) ВЫПОЛНЯТЬ

сумма нижних границ = сумма нижних границ +
нижняя граница [I];

ЕСЛИ моменты наблюдения [1, текущий МН ]<
сумма нижних границ

ТО результат по границе = 2

ИНАЧЕ //Проверка разности с предыдущими МН.

сумма нижних границ = 0;

I = текущий период - 1;

результат по границе = 0;

ПОКА (I > = 2) И (результат по границе == 0) ВЫПОЛНЯТЬ

последний = последний МН в периоде
(I – 1);

сумма нижних границ = сумма нижних границ + нижняя граница [I];

ЕСЛИ последний < > -1 ТО

ЕСЛИ (моменты наблюдения
[1, текущий МН ] –
моменты наблюдения
[1, переменный МН ]) <
сумма нижних границ

ТО результат по границе = 2

ИНАЧЕ результат по границе = 0;

I = I – 1.

Функция “первый МН в периоде (период)”

 

//Возвращает номер первого МН в последовательности попавшего в “период” или -1, если в последовательность нет такого МН.

 

первый = -1;

К = 1;

ПОКА (K < = длина последовательности) И (первый == -1) ВЫПОЛНЯТЬ

ЕСЛИ последовательность [К] == период

ТО первый = К;

К += К.

 

Функция “последний МН в периоде (период)”

 

//Возвращает номер последнего МН в последовательности попавшего в “период” или -1, если в последовательность нет такого МН.

 

последний = -1;

К = длина последовательности;

ПОКА (K > = 1) И (последний == -1) ВЫПОЛНЯТЬ

ЕСЛИ последовательность [К] == период

ТО последний = К;

К –= К.

 



Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.018 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал