Автор работы: Пользователь скрыл имя, 01 Ноября 2012 в 19:30, реферат
Бұл айнымалылардың маңызы өте зор. Мысалы, функция көп айнымалы болса, кейбір айнымалыларын (жалған айнымалыларды) алып тастауға болады. Ол бізге барлық параметрлер бойынша үнемдеуге мүмкіндік береді. Сондықтан осы үнемдеуді жүзеге асыратын программдық пакет құру актуалды мәселе. Бұл жұмыста қойылған мақсат бойынша бірінші теориялық, одан кейін программалық жүзеге асыру жүргізілді.
Мысал.
1)М = Р2. Бұл жағдайда [М] = Р2 .
2) М = {1,х1+х2} . [М] - L барлық сызықты функциялар сыныбы:
f(х1,...,хв) = с0+с1х1+...+сnxn, мұндағы с= 0,1(i =0,..,n), маңызды айнымалылар коэффициенті бірге тең де, жалған айнымалылар коэффициенті нөлге тең.
Тұйъқтаудыц қасиеттері
1)MÍ[M].
2)[[M]]=[M].
3) егер М1ÍМ2 , онда [М1]Í[М2] .
4) [M1ÈМ2] Ê[М1]È[М2] .
Анықтама.М сыныбы (жиыны) тұйық деп аталады, егер [М] = М.
Мысал.
1) М =Р2 сыныбы түйық сынып.
2) М = {1,x1+ х2} сыныбы тұйық емес.
Толықтық анықтамасы бастапқыға эквивалентті : М - толық жүйе, егер [M]= Р2.
7.Маңызды жабық сыныптар. Толықтық туралы теорема.
Р2 жиыньшдағы маңызды түйық сыныптарды қарастырайық.
1. T0 арқылы барлық f (x1,…,xn) буль функцияларының тұрақты нөлді сақтайтын сыныбын белгілейік, яғни f(0,...,0) = 0 орындалатын функцияларды.
0,х,x1&х2, х1vх2,x1Åx2ÎT0,
1, ÏT0.
Т0- тұйық сынып.
T1 арқылы тұрақты бірді сақтайтын барлық буль функцияларының сыныбын белгілейміз, яғни f(1,...,1)=1 теңдігі орындалатын функциялар сыныбы:
1,x,x1&x2,x1vx2ÎT1,
0, ÏT1. T1 сыныбы T2 сыныбына қосалқы. T1 сыныбы тұйық сынып
3. S арқылы барлық өзіндік
қосалқы функциялар сыныбын
4. Жинақтардың векторлы жазылуын қолдана отырып:
=(a1,…, an), =(b1,…, bn), f (a1,…, an)=f ( ) екендігін аламыз.
Анықтама. Егер a1£ b1,...,an£bn шарты орындалса, онда = (a1,...,an) және =(b1,..., bn) екі жинағы үшін алдын алу қатынасы орындалады дейді.
Мысалы, (0,1,0,1) £ (1,1,0,1). Егер £ және £ , онда £ .
Анықтама. Егер £ шарты орындалатын кез-келген және жинақтары үшін f ( )£f ( ) теңсіздігі орындалса, онда f (х1,...,хп) функциясы монотонды деп аталады.
М арқылы барлық монотонды функциялар жиынын белгілейік. 0,1, х, x1 & х2, х1 v х2 Î М. М сыныбы тұйық.
5. L - барлық сызықты функциялар сыныбы.
0,1,x, ,x1Åx2ÎL ,x1&x2, х1 v х2ÏL. L сыныбы тұйық.
Алгебра логикасының негізгі есептерінің бірі- толықтылықтың қажетті және жеткілікті шарттарын қарастырайық.
Айталық G={f1,f2,..,f5,...} - Р2 жиынындағы кез-келген функциялар жүйесі болсын.
Осы жүйенің толықтылығын калай анықтауға болатынына келесі теорема береді.
Теорема (функционалды толықтық туралы).
G функциялар жүйесі толық болуы үшін оның келесі бес тұйық сыныптың T0,T1,S,M және L бірде біреуінде толығымен жатпауы қажетті де жеткілікті.
8.Пост нәтижелері
Р2 жиынындағы тұйық сыныптарды американ математигі Э. Пост терең зерттеген. Ол Р2 жиынындағы барлық түйық сыныптардың құрылымы сипатталған.
Анықтама. М тұйық сыныбындағы {f1,f2,…,fs,…} функциялар жүйесі толық деп аталады, егер оның тұйықтауы М сыныбымен беттеседі.
Басқаша айтқанда, егер М
сыныбындағы әрбір функция
Анықтама. Егер ол М сыныбында толық , ал оның кез-келген өзіндік ішжиыны М сыныбында толық болмаса, онда М тұйық сыныбындағы функциялар жүйесі {f1,f2,...,fs,...} оньщ базисі деп аталады. Мысалдар.
1)f1=x1x2, f2=0, f3=1, f4=x1Åx2Åx3 функциялар жүйесі Р2 жиынының базисі боып табылады. Дәлелдеу:
{ x1x2,0,1,x1Åx2Åx3}- Р2 жиынында толық.
{ x1x2,0,1}- Р2 жиынында толық емес.
2) {0,1,x1&x2, х1 v х2} функциялар жүйесі М сыныбының базисі болып табылады.
1 Пост теоремасы. Р2 жиынындағы әрбір тұйық сынып ақырлы базиске ие.
2 Пост теоремасы. Р2 жиынындағы тұйық сыныптар жиынындағы қуаты санаулы.
Анықтама. Егер і-ші құрамдас бөлік бойынша көршілес және жинақтары табылатын болса, онда f (x1,…,xi-1,xi,xi+1,…,xn) функциясының xi (1£i£n) айнымалысы елеулі деп аталады (яғни
f ( )¹f ( ) қатынасы орындалатындай =(a1,...,ai-1,0,ai+1,…,an) және =(a1,...,ai-1,1,ai+1,…,an) табылса). Кері жағдайда xi (1£i£n) айнымалысы f (x1,…,xi-1,xi,xi+1,…,xn) функциясының жалған айнымалысы деп аталады.
Анықтама. Егер f ( ) және g( ) функциялардың маңызды айнымалылар жиыны бетессе және кез келген және жинақтарда функциялардың мәндері бірдей болса:
f ( )=g( ),онда f ( ) және g( ) функциялары тең деп аталады. Егер f ( ) және g( ) функциялары тең болса, онда олардың біреуін екіншісінен жалған айнымалыларды қосу немесе алып тастау арқылы алуға болады.
f( ) =(11110011) функциясының барлық жалған және елеулі айнымалыларын табу керек:
ШЕШІМІ: Бұл функция үшін келесі кестені сызамыз:
x1 x2 x3 |
f( ) =( x1, x2, x3) |
0 0 0 |
0 |
0 0 1 |
0 |
0 1 0 |
1 |
0 1 1 |
1 |
1 0 0 |
1 |
1 0 1 |
1 |
1 1 0 |
0 |
1 1 1 |
0 |
x1: f(0,0,0)¹f(1,0,0) яғни, берілген функцияның мәндері сәйкес келмейтін жинақты табуға болады. Қорытынды - x1айнымалысы f( ) функциясының елеулі аргументі.
x2: f(1,0,0)¹ f(1,1,0), яғни x2 айнымалысы f( ) функциясының елеулі аргументі.
x3: f(0,0,0)=f(0,0,1)=0, f(0,1,0)=f(0,1,1)=1, f(1,0,0)=f(1,0,1)=1, f(1,1,0)=f(1,1,1,)=0, яғни берілген функцияның мәндері барлық көршілес жинақтарда бірдей.
Программалық жүзеге асыру негізінен Delphi ортасында орындалды.Ол төменде көрсетілген:
unit Finder;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
RadioGroup1: TRadioGroup;
Button1: TButton;
Edit1: TEdit;
StringGrid1: TStringGrid;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type IntType = LongInt;
Mas = Array [1..10000] Of IntType;
var
Form1 : TForm1;
intVar : IntType;
mT : Mas;
implementation
{$R *.dfm}
FUNCTION Power(X : IntType; P : IntType) : IntType;
Var Ret : IntType;
i :IntType;
Begin
If (p=0)or(x=1) then
Begin
Power:=1;
Exit;
End;
Ret:=1;
For i:=1 to P do
Begin
Ret:=Ret*X;
End;
Power:=Ret;
End;
FUNCTION Meaning(X,Y : IntType) : IntType;
Var j, Ret : IntType;
Begin
If X=1 then
Begin
Meaning:=0;
Exit;
End;
Ret:=0;
x:=x-1;
For j:=1 to Y do
Begin
Ret:=X mod 2;
X:=X div 2;
End;
Meaning:=Ret;
End;
procedure TForm1.Button1Click(Sender: TObject);
Var i, j : IntType;
begin
If RadioGroup1.ItemIndex=-1 then
Begin
ShowMessage('Выберите функцию');
Exit;
End Else
If RadioGroup1.ItemIndex=0 then
Begin
Try
intVar:=StrToInt(Edit1.Text);
Except
ShowMessage('Ввведите, все-таки, кол-во переменных');
Exit;
End;
//Строим таблицу для удобства
StringGrid1.Visible:=True;
StringGrid1.ColCount:=intVar+
StringGrid1.RowCount:=Power(2,
For i:=1 to StringGrid1.ColCount-1 do
StringGrid1.Cells[i,0]:='x'+
For i:=1 to StringGrid1.RowCount-1 do
StringGrid1.Cells[0,i]:=
StringGrid1.ColCount:=
StringGrid1.Cells[StringGrid1.
Button2.Visible:=True;
For i:=1 to StringGrid1.RowCount-1 do
For j:=1 to StringGrid1.ColCount-2 do
StringGrid1.Cells[j,i]:=
End
Else
If RadioGroup1.ItemIndex=1 then
Begin
StringGrid1.Visible:=True;
Button3.Visible:=True;
StringGrid1.EditorMode:=True;
Try
intVar:=StrToInt(Edit1.Text);
Except
ShowMessage('Ввведите, все-таки, кол-во переменных');
Exit;
End;
StringGrid1.Visible:=True;
StringGrid1.ColCount:=intVar+
StringGrid1.RowCount:=Power(2,
For i:=1 to StringGrid1.ColCount-1 do
StringGrid1.Cells[i,0]:='x'+
For i:=1 to StringGrid1.RowCount-1 do
StringGrid1.Cells[0,i]:=
StringGrid1.ColCount:=
StringGrid1.Cells[StringGrid1.
Button2.Visible:=True;
For i:=1 to StringGrid1.RowCount-1 do
For j:=1 to StringGrid1.ColCount-2 do
StringGrid1.Cells[j,i]:=IntToS
StringGrid1.Options:=[
End;
RadioGroup1.Visible:=False;
Button1.Visible:=False;
ComboBox1.Enabled:=True;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.SelectAll;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var Ret, i, j, N, M, p, k: IntType;
Bol : Boolean;
mT1 : Mas;
begin
//Main Algorythm Block
If ComboBox1.ItemIndex=-1 then
Begin
ShowMessage('Выберите функцию');
Exit;
End;
If ComboBox1.ItemIndex=0 then
Begin
For i:=1 to StringGrid1.RowCount-1 do
Begin
Ret:=0;
For j:=1 to StringGrid1.ColCount-2 do
Ret:=Ret or StrToInt(StringGrid1.Cells[j,
StringGrid1.Cells[StringGrid1.
End;
End;
If ComboBox1.ItemIndex=1 then
Begin
For i:=1 to StringGrid1.RowCount-1 do
Begin
Ret:=1;
For j:=1 to StringGrid1.ColCount-2 do
Ret:=Ret and StrToInt(StringGrid1.Cells[j,
StringGrid1.Cells[StringGrid1.
End;
End;
//Finding Fictive Vars
M:=StringGrid1.ColCount-2;
N:=StringGrid1.RowCount-1;
For i:=1 to N do
mT[i]:=StrToInt(StringGrid1.
k:=0;
For i:=1 to M do
Begin
FillChar(mT1, SizeOf(mT1), 0);
For j:=1 to N do
Begin
p:=Power(2,i-1);
If ((j=1)or(mT1[j]<>-1))and(j+p<=
Begin
Bol:=(mT[j]=mT[j+p]);
If not Bol then
Begin
Label1.Caption:=Label1.
k:=1;
mT1[j]:=-1;
mT1[j+p]:=-1;
Break;
End;
End;
End;
If k=0 then
Begin
Label2.Caption:=Label2.
End
Else
k:=0;
End;
// End Of Finding Fictive Vars
end;
procedure TForm1.Button3Click(Sender: TObject);
Var j, i, n, m, p, k : IntType;
Bol : Boolean;
mT1 : Mas;
begin
ComboBox1.Enabled:=False;
//Finding Fictive Vars
M:=StringGrid1.ColCount-2;
N:=StringGrid1.RowCount-1;
For i:=1 to N do
mT[i]:=StrToInt(StringGrid1.
k:=0;
Label1.Caption:='Vulnerable:';
Label2.Caption:='Fictive:';
For i:=1 to M do
Begin
FillChar(mT1, SizeOf(mT1), 0);
For j:=1 to N do
Begin
p:=Power(2,i-1);
If ((j=1)or(mT1[j]<>-1))and(j+p<=
Begin
Bol:=(mT[j]=mT[j+p]);
If not Bol then
Begin
Label1.Caption:=Label1.
k:=1;
Break;
End;
mT1[j]:=-1;
mT1[j+p]:=-1;
End;
End;
If k=0 then
Begin
Label2.Caption:=Label2.
End
Else
k:=0;
End;
// End Of Finding Fictive Vars
end;
end.
Қорытынды
Қорытындылай келе жасалған жұмыстың нәтижелерін белгілейік:
Авторлармен жұмыс барысында келесі ескертулер енгізілді:
Қолданылған әдебиеттер тізімі: