1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn tốt nghiệp -Một Số thuật toán học trên bảng quyết định 9

7 296 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Luận Văn Tốt Nghiệp - Một Số Thuật Toán Học Trên Bảng Quyết Định 9
Trường học Trường Đại Học
Thể loại Luận văn
Định dạng
Số trang 7
Dung lượng 1,37 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

luận văn được phát triển thêm dựa vào ý tưởng của tác giả J.Celko trong một bài báo đăng trên tạp chí Byle tháng 11-1988, cách thức xây dựng một bộ tự động phát sinh chương trình cho người máy

Trang 1

PHULUCB

HAILdp

(jffrong thu~t loan ma chung ta se xet du'di day, chung ta se dQc

\tJ,cac gia trj cua mQt ham logic y ghi trong mQt t~p tin van ban,

sau d6 d1!a vao Bjnh ly 1 Chu'ong 3, chung ta phat sinh h~ phu'ong trinh

c6 cac fin s61a Wpi.Bc3giai h~ phu'ong trloo ay, phu'ong phap Gauss se

du'<;lcsii' dvng Bic3md~c bi~t trong thu~t loan nay la sau khi xac djnh

du'<;lccac h~ s6 Wpithi ham ngu'ong tuy6n HOO

y =IwpiXpi

ham ngu'ong tu'ongung vdi cac h~ s6 Wpihi~n t~i.

B.1 Boc nhung gia Ir! cua ham lOgicIll'mOlfile

Ngu'oi ta cho san t~p nhung vecto input va cac gia trj output trong mQt bang nhu' Bang B.1 Chung ta mu6n hill tru bang nay nay trong mQt t~p tin van ban Chung ta nh~n xet ding dc3hill trfi OOunggia trj cua mQt ham logic, thi khong can phcli hill tat ca nhung gia tri cua bang chan trio Ch~ng h~n vdi ham lOgic c6 gia trj cho trong Bang B.1., chung ta chi can lu'u l~i nhung gia trj d cQt cu6i cung, con OOungcQt dung phia tru'dc n6,

ch~ng qua chi la nhung thanh phan cua nhung vecto mftu 000, 001, ,111.

Nhu' v~y t~p tin van ban lu'u trii' gia trj cua ham logic y c6 d~ng

thuc chung nhu' san:

s6 phan tii' dau phan cach gla IT!cua y." . ?

Trang 2

Phl,JIl,JcB 65

Ban!! B.l: Gid trj cua mqthamnl§gic

Chung ta se md t~p tin nay, dQc philn tii' dilu tieD xem d6 nhumQt gia tri dc3'dinh fa dU<;1cs6 chi~u cua khong gian m~u, gia tri nay se dU<;1c

gall vao bie'n numrows Tie'p IDeo Ia tU'ngphiln tii' trong t~p tin se dU<;1c dQc va gall VllOmang mQtchi~u TRUEVALUE.

Thd h;1cgetint() dQc tU'ngky nr trong t~p tin van ban va chuyc3'n

thanh gia tri nguyen cho de'n khi dQcde'n ky nr phan cach

int getint ( FILE *f )

int null, c, signum;

signum = +1;

nUll = 0;

c = '0';

while ( (c != SEPARATOR)

if ( c == '-' ){

signum = -1;

&& (c != LINEFEED) && (c!= EOF) ) {

} else{

null = num * 10 + c - '0';

}

c = fgetc ( f );

};

nUll *= signum;

return nUll;

Trang 3

PhI) Il)cB 66

Thu Wcgettruevaluematrix() dQc tUng gia tri cua ham logic y tU

file mo ta tn~n va gall vao tUngph~ntti' mang a[].

void gettruevaluematrix ( FILE *f, int *a )

{

int i;

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

a[i] = getint ( f );

?

B.2 TIm t~p hQ'p Substratum cua mOt vecto' mau cho san B<3'tim duQc t~p hQp substartum cua vecto mall Pi chung ta se dung phuong phap danh ddu nhung vectd cua t~p hQp substratum tren ma tr~n A Phuong phap danh dftu duQc mo ta nhu hinh ve sail: Po PI P2 P3 000 001 010 0 1 1 D vectd P3 cho t~p substratum Sollia nhung vecto 0 0 0, 0 0 1, 0 1 0, 0 1 1 D Cac vectd nay duQc danh dftu vao ma tr~n Atren dong thli 3 Bang B.2 Ma trtJnA co mJi dong lil tcJp h(JpS V' il.III.III ::.: .'.1:.:1.11.11 ,, ::,",1:1.I':::ii::I,I:.II:I:.I : I'i:'::' ::I: 1IIIi::i:::::::.:,II: I ::::::::i:ill:i11::II::::::I:I:I.:.:.II I::I:,::.li .

1111111.lllll!1

1

:::::::SaHII

Trang 4

PhI,!Il,!cB 67

void findsubstratumset ( int p )

int k, mask;

mask = 1 « dimension;

for ( k = 0; k < mask; k ++ ) {

if ( ( k & P ) == k ) {

A[ P * numcols + k ] = 1;

} else{

A[ P * numcols + k ] = 0;

MQt di~m nh~n xet nho trong thu tQC tren Hi bie'ndimension la s6

chi~u cua khonggian mfiu P co th~ tIm duQc dc3dang thong qua bie'n

numrows la bie'n quy dinh t6ng s6 dong cua ma tr~n A Con t6ng s6 cQt

cua ma tr~n A chti'a trong bie'n numcols thl bftng numrows + 1.

Khi da co nhfi'ng t~p substratum Spi cua mQivecto mfiuPi , vi~c

l~p h~ phuong trlnh nhu trong Bang 3 trd nen ra't don gian: chi cfin ghi l~i

gia tri cua ham logic y dang chti'a trong mang TRUEVALUE vao cQt cu6i

clIng cua ma tr~n A. Cach lam duQc th~ hi~n qua thu tQc

makesystemequation( ).

void makesystemequation ( void

{

int i;

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

findsubstratumset ( i );

A[ i * numcols + numcols -1 ] =TRUEVALUE [ i ];

Thu tQClistsystemequation() co chti'c nang hi~n thi h~ phuong trlnh

ra man hlnh

void listsystemequation ( void)

int i, j;

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

for ( j = 0; j < numcols; j ++ ) {

cout «A[i * numcols + j] « " "

, }

cout « "\n";

Trang 5

PhI,!Il,!cB 68

Thu Wc getdim() lily v~ s6 chi~u cua khong gian m~u

int getdim ( void)

int i, X;

i = 0;

X = numrows;

do{

i ++;

X »= i;

)while ( X != 1 );

return ++i;

Sau khi chung ta da: di~n vao ma tr~n A mQi t~p Spi cua nhung vecto m~u pj va nhung ghi tri cua ham logic y vao cQt cu6i cling cua ma

tr~n nay, thi cling luc do chung ta da: thu duQc ma tr~n h~ s6 cua nhung phuong trinh

Y(pj) =l:Wqj

trong do t6ng duQc lily tren nhung vectd qj E Spi.

H~ phuong trinh nay se duQc ghH bAng phuong phap cheo hoa the

hi~n qua thu tl;1cdiagmatrix() de cu6i cling chung ta duQc ma tr~n duong

cheo ma tit ca nhung gia tri lIen vectd cQtcu6i cling chinh la nghi~m cua h~ phuong trinh

void diagmatrix ( int *a )

int i, j, p, q, n; int r,s;

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

j = -1;

do{

j ++;

)while ( a [i*numcols+j] == 0 );

p =-1;

do{

p ++;

)while ( a[p*numcols+j] == 0 );

s = a[p*numcols+j];

for ( q = p + 1; q < numrows; q ++ ) {

if ( a[q*numcols+j] != 0 ) {

r = a[q*numcols+j];

for ( n = j; n < numcols; n ++ ) {

a[q*numcols+n]+=r/s*a[p*numcols+n];

Trang 6

Phl,JIl,JcB 69

Bie't f~ng ma tr~n A sau khi cheo h6a thl vectd cC)tcu6i cung chinh

la nghi~m cua h~ phu'dng trlnh thl vi~c rut fa nhii'ng nghi~m d6 d~ gall

vao cac bie'n Wqjkhong kh6 khan Him Chung ta c6 thu ~c getsolutionO

du'oi day

void getsolution ( int *a, int *w )

int i;

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

w[i] = a[i*numcols + numcols - 1];

Sau khi da thu du'Qccac nghi~m cua h~, chung ta se cai d~t ham ngu'ong tuye'n tinh dt1atheo h~ iliac:

y(pJ =};Wp~pi

Va VIham mask Xpila tich cua nhii'ng phep chie'u ten tung thanh ph~n tQa dC),chiing h~n XOll= XjX2,ham ngu'ongtuye'n tinh se du'Qccai d~t b~ng cach ang voi m6i vectd m~u Pi chung ta se l~p fa mang t[] bi~u di~n tung ky so' nhj phan cua Pi , vi dV voi vec td m~u P3=011 thl cac

ph~n tit mang t[] la t[OJ=0, t[1] =1; t[2J=I Dt1atren mang t[],trong so' nhii'ng d6i so' truy~n qua ham ngu'ong chung ta tinh tich nhii'ng x[jJ voi nhii'ng chi so'j ma t[jJ :;r!: O.

float threshold ( int *x )

{

int i, j, mask, t[64];

float s ,y = 0;

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

s = 1;

t[O] = 1;

for ( j = 1; j <= dimension; j ++ ) { mask = 1 « ( j - 1 );

t[dimension - j + 1] = ( mask & i ) / mask;

} for ( j = 0; j <= dimension; j ++ ) {

Trang 7

PhVIvc B 70

if I t[j] != 0 )1

s *= x[j];

s *= w [i] ;

Y += s;

return y;

void main I)

FILE *f;

f = fopen I "d:\\luanvan\\twolayer\\input.dat", "r" );

numrows = getint If);

numcols = numrows + 1;

gettruevaluematrix I f, TRUEVALUE );

fclose If);

dimension = getdim I);

cout « "dimension: " « dimension « "\n";

makesystemequation I);

listsystemequation I);

diagmatrix I A );

listsystemequation I);

getsolution I A, w );

listsolution I w );

x[O] = 1;

x[l] = 0;

x[2] = 1;

x[3] = 0;

cout « "threshold function: " « threshold I x ) « "\n";

Ngày đăng: 08/04/2013, 21:32

🧩 Sản phẩm bạn có thể quan tâm