Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа1.doc
Скачиваний:
15
Добавлен:
02.05.2014
Размер:
212.48 Кб
Скачать

Алгоритм определения фиктивных переменных

Алгоритм определения фиктивных переменных в функции f(x1,···,xn) вытекает непосредственно из определения. В случае, когда функция f(x1,···,xn) задана таблично:

x1

x2

...

xn-1

xn

f

1

0

0

...

0

0

f(0,0,...,0,0)

2

0

0

...

0

1

f(0,0,...,0,1)

3

0

0

...

1

0

f(0,0,...,1,0)

4

0

0

...

1

1

f(0,0,...,1,1)

...

...

...

...

...

...

2n-3

1

1

...

0

0

f(1,1,...,0,0)

2n-2

1

1

...

0

1

f(1,1,...,0,1)

2n-1

1

1

...

1

0

f(1,1,...,1,0)

2n

1

1

...

1

1

f(1,1,...,1,1)

переменная xn будет являться фиктивной, если f1=f2, f3=f4, f5=f6, …, f2n-1=f2n. Переменная xn-1 будет фиктивной, если f1=f3, f2=f4, f5=f6, …, f2n-2=f2n. Переменная xn-2, если f1=f5, f2=f6, f3=f7, …, f2n-4=f2n и так далее. Таким образом прослеживается закономерность:

переменная xn-j является фиктивной, если для любых значений индекса i выполняется равенство fi=fi+2j

Блок-схема программы Листинг программы

#include <iostream.h>

#include <math.h>

#include <conio.h>

void main()

{int i, j, n, m, fl, *px, *pfl;

clrscr();

cout<<»Razmernost:\n»;

cin>>n;

m=pow(2,n);

px=new int[m];

pfl=new int[m];

cout<<»Vvedite vector znachenii funkcii:\n»;

for(i=0; i<m; i++)

cin>>px[i];

for(j=0; j<n; j++)

{ for(i=0; i<m; i++)

pfl[i]=0;

fl=0;

for(i=0; i<m; i++)

if(pfl[i]==0)

{ if(px[i]!=px[i+pow(2,j)]) {fl=1; break;}

pfl[i+pow(2,j)]=1;

}

if(fl==0) cout<<»X»<<n-j<<» – fiktivnaya peremennaya.\n»;

} getch();

}

Тестирование программы

X1

X2

X3

Y

Фиктивные переменные

0

0

0

0

X1, X2

0

0

1

1

0

1

0

0

0

1

1

1

1

0

0

0

1

0

1

1

1

1

0

0

1

1

1

1

X1

X2

X3

Y

Фиктивные переменные

0

0

0

1

X1, X3

0

0

1

1

0

1

0

0

0

1

1

0

1

0

0

1

1

0

1

1

1

1

0

0

1

1

1

0



X1

X2

X3

X4

X5

Y

Фиктивные переменные

0

0

0

0

0

1

X2, X4

0

0

0

0

1

0

0

0

0

1

0

1

0

0

0

1

1

0

0

0

1

0

0

1

0

0

1

0

1

1

0

0

1

1

0

1

0

0

1

1

1

1

0

1

0

0

0

1

0

1

0

0

1

0

0

1

0

1

0

1

0

1

0

1

1

0

0

1

1

0

0

1

0

1

1

0

1

1

0

1

1

1

0

1

0

1

1

1

1

1

1

0

0

0

0

1

1

0

0

0

1

0

1

0

0

1

0

1

1

0

0

1

1

0

1

0

1

0

0

0

1

0

1

0

1

1

1

0

1

1

0

0

1

0

1

1

1

1

1

1

0

0

0

1

1

1

0

0

1

0

1

1

0

1

0

1

1

1

0

1

1

0

1

1

1

0

0

0

1

1

1

0

1

1

1

1

1

1

0

0

1

1

1

1

1

1

X1

X2

X3

X4

Y

Фиктивные переменные

0

0

0

0

0

X2

0

0

0

1

0

0

0

1

0

1

0

0

1

1

0

0

1

0

0

0

0

1

0

1

0

0

1

1

0

1

0

1

1

1

0

1

0

0

0

0

1

0

0

1

1

1

0

1

0

0

1

0

1

1

1

1

1

0

0

0

1

1

0

1

1

1

1

1

0

0

1

1

1

1

1

X1

X2

X3

X4

Y

Фиктивные переменные

0

0

0

0

0

X3

0

0

0

1

1

0

0

1

0

0

0

0

1

1

1

0

1

0

0

0

0

1

0

1

0

0

1

1

0

0

0

1

1

1

0

1

0

0

0

0

1

0

0

1

1

1

0

1

0

0

1

0

1

1

1

1

1

0

0

1

1

1

0

1

0

1

1

1

0

1

1

1

1

1

0

X1

X2

X3

X4

Y

Фиктивные переменные

0

0

0

0

0

X1

0

0

0

1

0

0

0

1

0

1

0

0

1

1

1

0

1

0

0

1

0

1

0

1

0

0

1

1

0

1

0

1

1

1

0

1

0

0

0

0

1

0

0

1

0

1

0

1

0

1

1

0

1

1

1

1

1

0

0

1

1

1

0

1

0

1

1

1

0

1

1

1

1

1

0

X1

X2

X3

X4

Y

Фиктивные переменные

0

0

0

0

1

X1, X4

0

0

0

1

1

0

0

1

0

1

0

0

1

1

1

0

1

0

0

0

0

1

0

1

0

0

1

1

0

1

0

1

1

1

1

1

0

0

0

1

1

0

0

1

1

1

0

1

0

1

1

0

1

1

1

1

1

0

0

0

1

1

0

1

0

1

1

1

0

1

1

1

1

1

1



10