Академический Документы
Профессиональный Документы
Культура Документы
, -.
()
. ( )
, .
( ) :
0 ( vn),
1, 1
, 2, 2
, . . 1 1 . . i+1
i (. 14.1).
. ,
.
i,
i+1.
0. ,
- vn .
!
, . (. 20.1).
, ..
.
4
:
0, 1, 2, 3, 4
1, 0, 3, 2, 4
2, 0, 3, 4, 1
3, 1, 2, 4, 0
4, 2, 3, 0, 1
. 20.1.
: j
p, .
20.1.
. 20.2
1, .
20.1. () ,
vn
#define NOV -1
/* -
*/
int p[n];
/* ; */
...
/* , vn */
void obhod_gr_sh (int vn)
{ <== vn; p[vn] = vn;
do
{ ==> v; v;
/* n */
for (j (v))
if (p[j]==NOV)
/* m */
{ <== j; p[j] = v; }
/* n */
} while ( != );
/* n */
}
...
for (i=0; i<n; i++) p[i] = NOV;
/* p
*/
obhod_gr_sh (vn);
/* , vn */
: for (x S) . . . ,
x S ( - "").
p[j] v,
j j . , . .
, j (..
).
NOV,
,
.
p
(
, ).
i vn - v[1], ... , v[L],
v[1]=i, v[L]=vn, v[k]=p[v[k-1]] k>1.
0
4
vn = 1
/ \
0
/
2
1
j = 0 1 2 3 4
p[j] = 1 1 0 1 3
3
\
4
3
. 20.2. 1
20.1
, (
).
20.2.
20.2. ()
for (i=0; i<n; i++) p[i] = NOV;
for (vn=1; vn<=n; vn++)
if (p[vn]==NOV) obhod_gr_sh(vn);
/* p
*/
/* , vn
*/
, , . . .
, , :
() , , -
.
20.1.
. .
. 20.4 , ( )
: 1, 2, 4, 5, 3, 1; : 1, 2, 4, 3, 1 : 3, 4, 5, 3.
- .
1
5
0 1 1 0 0
1 0 0 1 0
1 0 0 1 1
0 1 1 0 1
0 0 1 1 0
3: 5 3 4 5
. 20.4.
: ( )
.
, ,
( -
). , ,
. ,
(. 20.5).
4
1
3
...
4
3
1
4
5
5
5
3
1
...
4
2 3
. . .
3
1
...
5
2
3
...
1 4
5
...
5
3
...
) , ,
(vn < v[0]), ..
.
1,
(v[+1] = v[0]).
. 20.5
.
pminc.
,
, , ) -
3, .
.
.
, j,
, ..
vn j.
vn j, ,
.. . (
).
1.
, 40 .
2. .
3. .
4. ,
.
6
5. 20.1
:
j =0123456
p[j] = 3 4 3 1 4 6 4
) ?
)
3?
) , p.