. , , ,

,,,

- —

һ

-

5 1251

___________________

()

..

___________________

()

. 頠 _____________2006.

- .-., 𠠠

..

__________________ ___________________

____________2006. ___________________

___________________

2006

TOC o "3-3" h z " 1;1; 2;2; 3;3" . PAGEREF _Toc106814102 h 3

1 . 4

1.1 . 4

1.2 . 4

2 . 6

2.1 . 6

2.1.1 . 6

2.1.2 . 6

2.2 . 8

2.2.1 . 9

2.2.2

. 10

2.2.3

. 11

3

16

3.1 . 16

3.2 . 20

. 2 PAGEREF _Toc106814102 h 3

. 24

. PAGEREF _Toc106814110 h 25

. 26

, , , - , , .

, , , , ..

: , ; ( , - , ); -, -, - ; , .

, , . 20 ..[1] , .

, .

[1],[3],[8].

, : , , , , .

, .. .. .[19]

, , . , , . . ( .) ( ). . , , .

. :

        ;

        , ;

        ;

        , .

1

1.1

, . , , , - . - , , . : , , , , . .

, , , .

, , .

, , -.

, , .

, .

, , , .

, , , .

, , .

, .

, .

, , .

A B , , A B.

A B , , A B.

, ; , .

, .

, , .

- D, D1, D2,... , Dm.

, . . , .

, .

, .

, .

1.2

G=(E,V,H) [6],[7], E , V , H H: VE*E. vÎV H (, , . i v, i = , j, j= i V, , i V. , .

iÎE .

vÎV .

, :

(1.2.1)

, , :

(1.2.2)

S

Q

l

k

i, ( ).

j, bj, () .

bj<0, bj>0, bj=0.

, :

(1.2.3)

:

" iÎE, " vÎV

(1.2.4)

(1.2.5)

(1.2.6)

2

2.1

2.1.1

- , . , .

. -, - : - , - , .. .

. , , , , .

, ( , ) .

2.1.2

, , , .

() .

, , , , .

-, ; , ; , .

() ( ).

, , , , , , (, ). .

, , . . , , , . , , .

: . , . ().

. , .

() , , - .

, .

. , . , . , , . , , . , ( ) . ( , ) . , , .

, , , . , . . , . , .

- , , . .

() () . .

():

1)      (, , .), ;

2)      ( , ), ;

3)      ( ).

, -, , , . , , , , . , . () . , ..

: , , - ; () (), (); ( ) , .

, , , , .

30 , . , . , ( , , , .).

, ( ) , , , , . , .

. -, , . -, , , , .

( ) .

, . , , .

2.2 .

- . 150 , , , , , , .

, , ; , : 1,2,,n, , 2- :

  1. K, , :
  2. , , ,

, , .. . .

, - , , . , . , - CIC .

30- , , , . , .

, - , - - - , .

, , [19]:

)      , , , ;

)      .

, , . . , , , . , , , , , , . , .

, , .

2.2.1

, , , . , .., .., .. .

, , . , .

. , . , .

, ( ) . , . . .

. , .

2.2.2

: .

, , , .

- . .

, , . , :

1)      ( ) , , , ( ) , .. ;

2)      ;

3)      , .

, , .

[7],[22],[24].

, , .

, .. [1]. , , .

2.2.3

- . (, , , ) , .

( ) .., .. , , , , . , .

() 1932 .., [4].

1934 .. , .

.. . , : , , .

, , 1936 . , , , . , ( ) .

, () .

:

1.      - , , .

2.      . .

3.      .

4.      , ( ).

, , (. 2 4) .. ( ) .

: ; , , , , . , :

1)      ;

2)      .

:

1)      ;

2)      , ;

3)      , ( ), () ;

4)      , , .

, .3 4 , .

. , ( ) . , , , .

, , .

- . , . , , , , , . .

, , . , .

, , , , [3].

. , , .

:

1.      . - , , [3].

2.      . , -, , [3]. , , , [15].

3.      , , , , , . : , - .

4.      .. [8] , . , .. [15], -.

, , , . . , , , .

, . ., .[22] , :

(2.2.3.1)

-

:

(2.2.3.2)

:

(2.2.3.3)

,

.. , , , . , , , .

.

, . . , , .

.

.[5] . , , , .

. ., [24]. .

.. .. [19] , , , .

, , .

.., .. .. [20], , , , () .

.. , , ,- [8].

. , .

, .

( ), , . .

, , . , , .

, , , , . , .

3

3.1

. Delphi 7.0. Delphi , , , - . Delphi , - .

:

cHouse= class(TObject)

public

No:integer; //

XCoord:integer; // X

YCoord:integer; //

Pressure:real; //

IsSet:boolean; // true ()

Next:pointer; //

Prev:pointer; //

Name:AnsiString; //

kind:AnsiString; //

function IsInside(x:integer;y:integer):boolean; //

// , //. . : //true , false

procedure Draw(); // . , 蠠 ,

procedure Del(forDel:pointer); // . //

constructor cHouse(p:pointer); //

end;

:

cTube = class

public

StartHouse:pointer; // ,

FinishHouse:pointer; // ,

params: array[0..1] of real; //

Next:pointer; //

Prev:pointer; //

kind:integer; // : 0 , 1 , 2 , 3

AddPress:real; // ( - )

constructor cTube; //

end;

:

Base:pointer; //

BaseTube:pointer; //

E:real=0.1; //

P1:array[0..4] of real; //

BasePrice:real; //

maxD:real; //

minD:real; //

:

- ,

- , ,

AL-, , AL=1

- ,

- ,

E- ,

EPS- , P

, E,EPS,AL , .

:

M,N,KX,KPP-, , , ,,, ,

P-, ( )

[i]- ,

[i]- ,

PP-, , P

, PP[i]=0- P , PP[i]=1- P.

KK-, .

:

SH-

P- ,

J,K,I,S- ,

PD-

PR, -

, :

function QR1(PH:real;PK:real; P1:array of real ; P2:array of real; kind:integer

;addit:real):real ;

var QQ:real;

begin

QQ:=sqrt(abs(PH+addit-PK)/(P1[0]*P1[1]*P1[2]*P1[3]*P1[4]*P2[1]));

if (PH+addit

then begin QR1:=-QQ; exit; end

else begin QR1:=QQ; exit; end;

end;

:

PH , ;

PK , ;

P1 ;

P2 ;

Kind ;

Addit ( )

, ; ;

function Q(Press:real; C:cHouse):real;

var temp:cTube;

Q1,Q2:real;

begin

if (BaseTube=nil)

then begin Q:=0; exit; end;

temp:=cTube.Create;

pointer(temp):=BaseTube;

Q1:=0; Q2:=0;

while(1=1) do begin

if (temp.kind<>3) then begin

if (temp.StartHouse=pointer(C))

then Q1:=Q1+QR1(Press,(cHouse(temp.FinishHouse)).Pressure,P1,temp.params,temp.kind,temp.AddPress);

if (temp.FinishHouse=pointer(C))

then Q2:=Q2+QR1( (cHouse(temp.StartHouse)).Pressure,Press,P1,temp.params,temp.kind, temp.AddPress);

end;

if (temp.Next=nil)

then break;

pointer(temp):=temp.Next;

end;

Q:=Q2-Q1;

end;

:

Press , ;

,

, kind=3 ( ) , ..

, ( Q

function LOS (I:cHouse):real;

var Y, A, B, QA, QB, QY,DEL,PD:real;

temp:cTube;

begin

A:=100000000.0;

B:=0.0;

if (BaseTube=nil) then begin LOS:=0; end;

temp:=cTube.Create;

pointer(temp):=BaseTube;

while(1=1)do begin

if (temp.kind<>3) then begin

if (temp.StartHouse=pointer(I)) then begin

if (A>(cHouse(temp.FinishHouse).Pressure))

then A:=cHouse(temp.FinishHouse).Pressure;

if (B<(cHouse(temp.FinishHouse).Pressure))

then B:=cHouse(temp.FinishHouse).Pressure;end;

if (temp.FinishHouse=pointer(I)) then begin

if (A>((cHouse(temp.StartHouse).Pressure)+temp.AddPress)) then

A:=cHouse(temp.StartHouse).Pressure+temp.AddPress;

if(B<((cHouse(temp.StartHouse).Pressure)+temp.AddPress)) then

B:=cHouse(temp.StartHouse).Pressure+temp.AddPress;end;

end;

if (temp.Next=nil) then break;

pointer(temp):=temp.Next;

end;

QA:=Q(A,I);

QB:=Q(B,I);

if (QA=0.0) then PD:=A;

if (QB=0.0) then PD:=B;

if ((QA>0)and(QB<0))

then begin

Y:=B;

B:=A;

A:=Y;

Y:=QB;

QB:=QA;

QA:=Y;

end;

if ((QA<0)and(QB>0)) then

while ((abs(QA)>=EPS)or(abs(QB)>=EPS)) do begin

Y:=(A+B)/2.0;

QY:=Q(Y,I);

if (abs(QY)

begin

PD:=Y;

LOS:=PD;

exit;

end;

if (QY>0.0) then B:=Y else A:=Y;

end;

PD:=(A+B)/2;

LOS:=PD;

end;

:

I ,

I

procedure TForm1.Button1Click(Sender: TObject); // // .

var S,J:integer;

temp:cHouse;

begin

if (Base<>nil) then pointer(temp):=Base else exit;

while(1=1) do begin

if temp.IsSet=false then temp.Pressure:=0.0;

if (temp.Next=nil) then break;

pointer(temp):=temp.Next;

end;

P1[0]:=StrToFloat(StringGrid1.Cells[1,1]);

P1[1]:=StrToFloat(StringGrid1.Cells[2,1]);

P1[2]:=StrToFloat(StringGrid1.Cells[3,1]);

P1[3]:=StrToFloat(StringGrid1.Cells[4,1]);

P1[4]:=StrToFloat(StringGrid1.Cells[5,1]);

S:=1;

while (S<>0) do begin

S:=0;

if (Base<>nil) then pointer(temp):=Base else exit;

while(1=1) do begin

if (temp.IsSet=false) then

if (abs(Q(temp.Pressure,temp))>=E)

then begin

S:=S+1;

temp.Pressure:=LOS(temp);

end;

if (temp.Next=nil) then break;

pointer(temp):=temp.Next;

end;

end;

end;

, , .

3.2

1. ( , 1).

, ( , 2).

 

:

N=5

M=4

P (0) =100

P (4) =20

:

P (1) =80

P (2) =60

P (3) =40

2. ( , 3). . .

 

:

N=14

M=20

, ( , 4).

:

 


3.2.1

3. . , ( , 1).

, ( , ,1 2).

:

N=134

M=148

:

 

3.2.2

. . , - , .

, , , . , -, -, . , , .. .

, . , . , . . , , . , . . . , , -, -, .

  1. .. . : .1972
  2. .., .., .., .., .. . .: , 1983.
  3. .., .. . . 1960 11. 17-18.
  4. .. . .: . , 1932.
  5. .. .-.. - . 1964. 4. . 69-73.
  6. . " ", ., , 1962;
  7. . 3 . 1978. .30. . 100.
  8. .. . .. - . 1964.6. . 80-90.
  9. .. .- . 1961. 4. . 20-24.
  10. .., .., .. ( ): 290800 . . . . . . 1999. . 46
  11. .. // . 1987. 4.
  12. - ( ): . .1 /.: .., .., .. . . , 1997.
  13. . ., . . Delphi 7. .: -, 2004.
  14. .., .., .. . : . 1978.
  15. .., .. . : . 1980.
  16. . ., . . Delphi 6/7. . . .: ϻ, 2002.
  17. .. . . . 4, 2001.
  18. .. . .
  19. .., .. . .: , 1985.
  20. . .: . 1983
  21. 2. 04.02-84. . . : , 1984.
  22. .., .. . .: .1965.
  23. .. Delphi . , 2003.
  24. ., .. . -: . 1968

.1

.2

.3

.4

.1

.2

һ -

 

 

 

! , , , .
. , :