You are on page 1of 48

CAPITOLO 1

LA DECONTAMINAZIONE DI UN GRAFO

1.1 CACCIA ALL’ALIENO


Per introdurre più facilmente gli argomenti trattati nei capitoli successivi,

utilizziamo un esempio tratto da un film di fantascienza (da alcuni

considerato una pietra miliare nella storia recente dei film ambientati nello

spazio). Il film in questione è Alien (Sc 79 film). Un’astronave persa nello

spazio, con a bordo un numero fissato k di astronauti, viene accidentalmente

contaminata da un essere alieno. L’astronave è formata da cunicoli e tunnel,

in cui i personaggi del film, muovendosi armati fino ai denti, cercano

disperatamente di raggiungere ed

uccidere l’intruso. Quest’ultimo è di una

furbizia superiore, così appena viene

lasciato un passaggio incustodito questi

vi si insinua con rapidità. Fig. Alien (disegno di Giger).

SQUADRA DI k=4
ASTRONAUTI

2
Ovviamente in ogni astronave che si rispetti, il capitano possiede una mappa

di tutti i corridoi della nave. Questa mappa può essere rappresentata come un

grafo. I nodi corrisponderanno ai punti dove due o più tunnel della nave si

incrociano, mentre i tunnel stessi saranno rappresentati dagli archi del grafo.

Come esempio tracciamo qui di seguito il grafo corrispondente ad una

ipotetica astronave.

Mappa
dell’astronave

Gli astronauti non conoscono le mosse future dell’alieno e non sono a

conoscenza neanche delle mosse passate (l’alieno non ha lasciato tracce

durante i suoi spostamenti attraverso i tunnel dell’astronave).

L’unica possibilità che hanno gli astronauti di catturare l’alieno è quindi

quella di visitare tutti i tunnel della loro nave spaziale. Durante questa visita

3
devono stare attenti a non lasciare incustoditi tunnel già decontaminati. Colti

di sorpresa gli astronauti del film attuano una ricerca senza seguire una

precisa strategia. La strategia, ovvero l’insieme di mosse che il gruppo di

astronauti effettua, potrebbe essere più efficentemente definita a tavolino,

dove il Capitano, utilizzando solo il numero strettamente necessario di

astronauti, potrebbe organizzare le loro mosse in modo da non lasciare

scoperti nodi o in modo da non far visitare due volte gli stessi archi. Il

problema del Capitano, che si trova davanti alla mappa della nave, è allora il

seguente: qual’è il minimo numero di astronauti necessario alla totale

decontaminazione dell’astronave? Rispondere a questo quesito in modo

veloce, rappresenta per l’equipaggio una questione di vita o di morte. Nel

film il numero di astronauti è insufficiente per realizzare l’eliminazione

dell’alieno, e l’epilogo è dei più tragici.

Il nostro scopo, nel seguito, sarà di studiare il problema nella sua

formulazione generale e di prendere atto di quanto sia complesso e talvolta

impossibile il lavoro del Capitano, che deve gestire la giusta strategia con il

minor numero di uomini. Comunque, l’esempio tracciato nella prima figura

ci fa capire che in alcuni casi, utilizzando delle particolari navi spaziali, la

risposta a queste domande può risultare più semplice.

Nel film, anche se eroicamente, il

Tenente Ripley e tutta la squadra di

astronauti alla fine devono soccombere

alla furbizia dell’alieno, che aiutato dal

caos di tunnel di cui è costituita

l’astronave riesce a sfuggire ad ogni Fig. Ripley (foto dal film)

4
tentativo di cattura. Per questo motivo a chiunque volesse mettersi in

viaggio, consigliamo di utilizzare navi spaziali dalle dimensioni ridotte e

caratterizzate da sistemi di tunnel che appartengano solo a determinate classi.

Così, con l’aiuto di una mappa della nave e un numero sufficiente di

astronauti potrete dormire sonni tranquilli anche a migliaia di anni luce dalla

terra, nel bel mezzo dei pianeti più ostili.

1.2 DEFINIZIONI RELATIVE ALL’EDGE SEARCHING


Definiamo G=(V,E) come un grafo non orientato connesso ed immaginiamo

che questo grafo rappresenti un sistema di tunnel nei quali è nascosto un

fuggitivo.

Fig. Grafo non orientato connesso

I membri di una squadra di k searcher (esploratori) attraversano il grafo

cercando di catturare il fuggitivo, mentre questi, astuto e scaltro, si muove

lungo gli archi del grafo con velocità non limitata, cercando di evitarli. In

alternativa, possiamo interpretare la figura del fuggitivo come un gas tossico

5
penetrato all’interno di un sistema di tubature, scopo del team di searcher

diventa allora la decontaminazione dei condotti.

Formalizziamo ora il problema generale:

Qual è il più piccolo numero di searcher necessari per la visita completa del

grafo, che a secondo della formulazione del problema, permetta o la cattura

del fuggitivo o la decontaminazione delle tubature?

Questo problema fu suggerito per la prima volta da Parsons (Pa 76), che prese

spunto da un problema pratico di speleologia (Br 67). Parsons lo introdusse

come problema non discreto, con searcher e fuggitivo che potevano muoversi

continuamente. Comunque, come lo stesso Parsons osservò, è possibile

mostrare che il problema è equivalente ad un problema discreto. D’ora in

avanti lavoreremo solo sulla versione discreta del problema.

Le operazioni base che, possiamo identificare all’interno del problema, sono

3 (MHGJP 88):

1. Posiziona un searcher

su un vertice;

2. Rimuovi un searcher

da un vertice;

3. Muovi un searcher da un vertice

ad un altro lungo un arco.

6
Non ci sono limiti sul numero di searcher che un vertice può contenere,

benchè due saranno in ogni caso sufficienti per la soluzione del problema.

Inizialmente, tutti gli archi del grafo sono considerati contaminati (ossia

possono con la stessa probabilità contenere il fuggitivo). Come detto in

precedenza scopo del problema è decontaminare tutto il grafo, passando di

arco in arco. Un arco è considerato pulito, quando un searcher è posto ad un

estremo dell’arco e un secondo searcher parte dallo stesso estremo e percorre

tutto l’arco, fino a giungere all’altro estremo.

Gli estremi di un arco o vertici nel seguito saranno chiamati endpoint.

Se l’endpoint controllato è tale che, tutti gli archi incidenti su esso, tranne

quello che stiamo per decontaminare, sono già puliti, allora si può fare a

meno di un secondo searcher, pulendo l’arco semplicemente facendo

muovere il guardiano dell’endpoint lungo l’arco fino all’altro endpoint.

searcher

Le linee tratteggiate
rappresentano archi
decontaminati

7
Nel seguito, a volte capiterà di incontrare la parola guardiano; con questo

termine è identificato un searcher fermo su di un nodo. Tutte le strategie, che

in seguito presenteremo, sono basate sulla figura del guardiano, questi

rappresenta la guardia di confine tra zone contaminate e zone decontaminate.

Un arco pulito rimane tale finchè ogni cammino da esso ad un arco

contaminato è controllato da almeno un guardiano.

Un arco pulito viene ricontaminato se ad un passo dell’esplorazione del

grafo, si viene a creare un cammino tra un arco pulito e un arco non pulito

senza alcun searcher su di esso.

Arco
ricontaminato

Per evitare una ricontaminazione di archi puliti, i nodi controllati da

guardiani, devono, dopo ogni movimento, formare un insieme separatore che

divida le parti contaminate dalle parti non ancora decontaminate.

Insieme di nodi
controllati da
guardiani

8
Il grafo è cosiderato decontaminato con successo, una volta che tutti i suoi

archi sono simultaneamente puliti.

Un vertice è detto pulito se è controllato da un guardiano, o se tutti gli archi

incidenti su di esso sono puliti. In caso contrario un vertice è considerato

contaminato.

Vertici
puliti

Il problema così impostato prende il nome di “EDGE SEARCHING”.

La sequenza di spostamenti e posizionamenti di searcher che, permette la

decontaminazione di un grafo, è detta strategia di decontaminazione (S).

Il massimo numero di searcher, che appare simultaneamente sul grafo G ad

ogni punto della strategia S, è detto “EDGE SEARCH NUMBER DI S”,

es(G,S).

Una strategia è considerata ottima, quando i parametri sopra definiti

assumono il valore minimo. Questo valore minimo, ossia il minimo numero

di searcher necessario per realizzare una decontaminazione del grafo (alle

condizioni sopra elencate) è definito come “EDGE SEARCH NUMBER

DEL GRAFO G” ed è denotato con es(G).

9
1.3 NP-COMPLETEZZA DEL PROBLEMA DELL’EDGE

SEARCHING(MHGJP 88)

In generale il problema della decontaminazione di un grafo è stato dimostrato

essere in NP (La 93). Con il Teorema 1.6, il problema dell’edge searching

viene classificato come un problema NP-Completo. La dimostrazione di NP-

Completezza avverrà attraverso la riduzione da un altro problema NP-

completo. Infatti dimostreremo che il problema NP-Completo del min cut

into equal-sized subsets (divisione minima in sottoinsiemi della stessa

misura)(GJ 79) si riduce al problema dell’edge searching. Nella figura di

seguito riportata, evidenziamo la catena di riduzioni che permette di

dimostrare l’appartenenza del problema dell’edge searching all’insieme dei

problemi NP-Completi. In questo scritto affronteremo solo l’ultima

riduzione.

MAXIMUM 2-SATISFIABILITY

SIMPLE MAX CUT

MIN CUT INTO EQUAL SIZE SUBSET

EDGE SEARCHING

DEFINIZIONE 1.1: min cut into equal-sized subsets.

Istanza: Un grafo G=(V,E) con V pari, con k intero positivo.

Problema: Esiste una partizione di V in due sottoinsiemi V1 e V2 con

V1 = V2 =1/2 V tale che u,v E:u V1;v V2 k?

10
Il numero di archi che deve
andare da un insieme all’altro è
minore di k?

Fig. Rappresentazione del problema del min cut into equal-sized subsets.

Per realizzare la dimostrazione della NP-completezza dell’edge searching

abbiamo bisogno di alcuni lemmi che si riferiscono all’edge searching su

grafi completi. Ricordiamo che un grafo G è detto completo se tutti i vertici

che lo compongono sono fra loro mutuamente adiacenti. Sia K n il grafo

completo di n vertici. In questo caso utilizziamo la definizione di vertice

pulito, che sottointende che tutti gli archi incidenti su esso sono

decontaminati. Parsons osservò(Pa 76) che:

LEMMA 1.2

Per ogni clique Kn, con n 4, es(Kn)=n.

Il motivo di un così alto numero di searcher necessari alla decontaminazione

del grafo è dovuto alla struttura stessa del grafo, infatti, un guardiano non si

può allontanare da un nodo, proprio perché è connesso con tutti gli altri

nodi. Ovviamente bisognerà aspettare che, tutti gli archi incidenti su di un

nodo siano decontaminati per muovere il suo guardiano ma questo avverrà

11
solo quando ogni nodo del grafo conterrà un searcher-guardiano.

Formalizziamo questo discorso con il seguente lemma.

LEMMA 1.3

Supponiamo che ad un passo t durante una esplorazione di KM, con M 4, il

primo vertice diventi pulito. Allora ci devono essere almeno M-1 searcher su

KM durante questo passo.

Introduciamo ora altri due lemmi relativi all’edge searching su grafi

completi.

LEMMA 1.4

Supponiamo che il grafo G contenga m copie di KM (con M 4). I vari KM

sono fra loro disgiunti. Allora, nel processo di searching di G, ci deve essere

per ogni k con 1 k m, un punto in cui k clique hanno almeno un vertice

pulito, m-k non ne hanno nessuno, e c’è un clique con un vertice pulito che

contiene M-1 o più searcher.

Clique già
Clique che possiede un KM=5 pulito
solo vertice pulito, per
il lemma precedente
deve avere M-1 searcher
G
Clique
ancora
da pulire

m=3

12
LEMMA 1.5

Supponiamo che G contenga m copie di KM e che durante qualche passo

dell’esplorazione di G, c’è un insieme C1 di clique, contenente uno o più

vertici puliti (ancora con rispetto solo agli archi interni ai clique), e un

insieme C2 di clique non contenente tali vertici puliti. Allora, se u,v è un

arco di G tale che u appartiene ad un clique in C1 e v appartiene ad un clique

in C2, o u o v devono contenere un searcher.

DIMOSTRAZIONE

Se u,v è un arco pulito, allora v ha sia archi puliti che contaminati incidenti

su di esso e quindi deve contenere un searcher.

Se u,v è contaminato, allora poiché u ha almeno un arco pulito incidente su

di esso, u deve contenere un searcher.

Clique già
KM=5 pulite

G
Clique
ancora
da pulire

m=3

13
TEOREMA 1.6

Il problema: dato un grafo G e un intero k, può il grafo G essere

decontaminato utilizzando k searcher? è NP-Completo.

DIMOSTRAZIONE

G=(V,E) e k>0 costituiscono una data istanza del min-cut into equal sized

subsets.

Costruiamo un’istanza corrispondente di edge searching come segue:

Sia n= V ,

sia d il grado massimo dei vertici in G,

sia N=6(d+k),

sia M=n(n+2) N.

Es.

n=4
d=2
k=2
N=24
M=576

Il grafo che deve essere esplorato consiste delle seguenti parti:

1. Per ogni vertice vi V, un M-clique Ci;

2. Un M-clique addizionale “speciale” CA;

3. Tra ogni coppia Ci,Cj di M-clique, nN archi

N archi addizionali se o i o j sono A

Più

3 archi addizionali se vi,vj E

14
Gli archi sono aggiunti in modo tale che nessun vertice di un clique possiede

più di un arco esterno, questo poiché

M = n(n+2) N n2N+N+3d = Massimo numero di archi esterni di un clique,

che risulta essere minore del numero di vertici

del clique stesso (M). (n2 perché nN deve

essere moltiplicato per il numero dei clique

restanti presenti nel grafo, ossia n).

Es.

nN

nN+3

nN+N

Chiamiamo il grafo risultante H=(U,F). L’edge search number es è dato da

n 2
es=(M+1)+ nN+3k
2

Mostriamo ora che es(H) es se e solo se G ha il desiderato cut into equal

sized subsets.

15
Primo, supponiamo che il cut desiderato esista per G, ossia, c’è una

partizione di V in V1 e V2 con V1 = V2 tale che k’ k archi uniscono

vertici in V1 a vertici in V2. Mostriamo ora come H può essere pulito con al

più es searcher.

Prima rietichettiamo i vertici (e i corrispondenti clique) così che :

V1= v1,v2,…,vn/2

V2= v(n/2)+1,…,vn

Puliamo i clique nell’ordine:

C1,C2,…,Cn/2,CA,C(n/2)+1,……Cn

Per pulire il clique Ci al suo turno, poniamo un searcher su ognuno dei suoi

vertici che in questo momento non contengono un searcher. Allora, usiamo

un (M+1)-esimo searcher per pulire tutti gli archi interni a Ci. In seguito

puliamo ogni arco che, va da Ci ad uno dei clique vicini, muovendo il

searcher dal suo endpoint su Ci verso il suo endpoint nel clique più vicino,

dove il searcher sarà utilizzato come un guardiano, fino a che l’ultimo clique

sarà pulito.

E’ facile osservare che, il massimo numero di searcher per questa procedura

deve occorrere nel momento in cui uno dei clique comincia ad essere pulito e

16
ha M+1 searcher per se stesso. Se il clique che comincia ad essere pulito non

è CA, il numero totale di searcher è al più

n n n n 2 n
(M+1)+ –1 +1 nN + –1 (N+3d)=(M+1) + nN – nN + N
2 2 2 2 2

n
+3 d – 6d - 6k -3d=
2

n 2 n n n
=(M+1) + nN + 3k –3k –nN + N+ 3d - 9d - 6k es-k – nN +
2 2 2 2

(N+N)<es

Nel momento in cui si pulisce l’ultima clique contenuta nel gruppo di sinistra

otteniamo il caso peggiore:

17
Clique con
M+1 searcher

In questo modo quando procediamo alla pulizia dell’ultimo clique del primo

gruppo, sono stati effettuati esattamente n/2-1 spostamenti a raggiera di

searcher da clique puliti nel primo gruppo verso n/2+1 clique nel secondo

gruppo più CA.

Ogni volta (n/2-1) che avviene uno spostamento a raggiera devono essere

considerati anche N searcher aggiuntivi per spostamenti vero CA. Inoltre

negli spostamenti a raggiera (n/2-1) vanno considerati anche gli archi che

costituiscono il grafo G, a cui va sommato 3, il numero di archi è maggiorato

con il grado massimo di un vertice di G, ossia d.

Se il clique che comincia ad essere pulito è CA allora il numero di searcher è:


n 2 n 2
(M+1) + nN + 3K’ (M+1) + nN + 3K = es
2 2

Così es searcher sono sufficienti.

18
G H
A B C1 C2

C3 C4
C D

CA

M+1 Nn+3 M+1

Nn+3 nN nN+3 nN

Nn+N Nn+N

n° di searcher: (M+1)+3nN+N+3d

Nn+ Nn+ 2Nn+3 2Nn+3


Nn+3 Nn+3

Nn+N+ Nn+N M+1


n° di searcher: (M+1)+4nN+6=(M+1)+(n/2)2nN+3k

19
2Nn+3+ 2Nn+3+ M+1 3Nn+3
nN+N nN+N +N

n° di searcher: (M+1)+3Nn+3+N

M+1

Ora, supponiamo che H possa essere pulito utilizzando es searcher.


n
Consideriamo uno step nel processo d’esplorazione in cui +1 dei clique
2

n
hanno almeno un vertice pulito (con rispetto solo agli archi interni) ed no,
2

e M-1 searcher sono su di un clique con un vertice pulito. Tale step esiste per

il Lemma 1.4 sopra presentato.

Supponiamo che il clique con M-1 searcher non sia CA. Allora per il Lemma

1.5, il numero totale di searcher in uso in ogni istante deve essere almeno:

20
n 2 n n
(M-1) + nN + N = s + N –(3k+2)>s
2 2 2

Nodo con M-1 n/2 clique sono In più il clique CA è


searcher connessi a n/2 clique connesso a n/2 clique
con nN archi con N archi in più

n/2+1 n/2

CA

Una contraddizione.

Così il clique con M-1 searcher deve essere CA, e il numero totale di searcher

su endpoint di archi non corrispondenti ad archi in G deve essere (per il

lemma 1.5) almeno


n 2
(M-1) + nN = es – (3k+2)
2

Se V1= vi: Ci contiene un vertice pulito e V2 = vi: Ci non contiene un

n
vertice pulito possiamo avere V1 = V2 = e il numero di archi in G,
2

unendo un vertice in V1 a un vertice in V2, è al più (3k+2)/3 k. Perciò il

cut desiderato esiste. Concludiamo che H possa essere esplorato e

decontaminato con es searcher se e solo se G ha una divisione in sottoinsiemi

della stessa misura con k o meno archi. Poiché H e s possono essere costruiti

facilmente in tempo polinomiale da G e K, abbiamo una trasformazione

polinomiale e il teorema è provato.

21
1.4 GHOSTBUSTERS
Per introdurre il prossimo argomento, che, è poi il

nodo centrale di questo lavoro, ricorriamo anche

in questo caso alla cinematografia. Il film che

presentiamo è Ghostbusters (Re 85 film). La

caccia, in questo caso, avviene non

contro un alieno ma nei confronti di una

banda di fantasmi che hanno invaso la città di

New York. Limitiamo la nostra attenzione al momento in cui il gruppo di

Ghostbusters (searcher) è chiamato ad intervenire all’interno di un albergo

infestato dai fantasmi. L’albergo, uno dei più grandi di New York, è

costituito al suo 115° piano da una serie di intricatissimi corridoi. I fantasmi

si possono muovere solo all’interno di questi (dimentichiamo per un attimo

la possibilità che hanno di passare attraverso i muri).

Grafo
modello
del piano
di un
albergo

22
Per imprigionare un fantasma, e quindi liberare

un intero corridoio dalla loro presenza, è

sufficiente che due ghostbuster si posizionino

alle due estremità del corridoio e aprano il fuoco

simultaneamente, il fuoco incrociato dei due

fucili farà si che il fantasma sia risucchiato nella trappola. Ed è proprio

questo particolare che distingue i due esempi, nel primo caso (Alien) un

astronauta doveva percorrere un tunnel nella sua interezza per essere certo di

averlo decontaminato, per i ghostbuster invece è sufficiente posizionarsi alle

estremità del corridoio per fare pulizia da ogni tipo di fantasma.

astronauta ghostbuster

I ghostbuster saranno pagati non appena avranno liberato tutti i corridoi del

115° piano. Per essere certi di aver compiuto correttamente il loro lavoro, i

ghostbuster dovranno visitare tutti i corridoi in modo da non lasciare via di

uscita agli orrendi, seppur indifesi, fantasmi.

Quest’esempio ha ovviamente i suoi limiti, ed uno tra questi è la struttura

stessa dell’albergo. L’albergo si presta solo alla rappresentazione attraverso

grafi planari. Un piano di albergo, ad esempio, non potrà mai essere

23
rappresentato da un grafo come quello disegnato nella seguente figura,

perché ciò implicherebbe che due corridoi si incrociano senza però avere un

nodo comune.

1.5 DEFINIZIONI RELATIVE AL NODE SEARCHING(KP 86)


Il NODE SEARCHING non è altro che un’ulteriore versione del problema

della decontaminazione di un grafo. Nel node searching non si fanno scorrere

i searcher lungo gli archi, ma si posizionano come guardiani sui vertici. Un

arco è considerato pulito una volta che entrambi i suoi endpoint sono

simultaneamente controllati. Le rimanenti regole e nozioni di node searching

sono definite nello stesso modo dell’edge searching.

24
Il più piccolo numero di searcher richiesto per una decontaminazione totale

di tutti gli archi di un grafo G è chiamato il “NODE SEARCH NUMBER” di

G, ns(G).

:SEARCHER

1 2

1 2

2 3
3 1

3
2 1

Fig. Decontaminazione di un grafo G con la tecnica del node searching.

25
1.6 EQUIVALENZA TRA EDGE SEARCHING E NODE

SEARCHING (KP 86)


I rapporti tra node searching ed edge searching sono molto stretti. Ora

soffermiamoci per un momento sulla storia, lessicale di questi problemi. Il

problema introdotto inizialmente da Parsons era definito semplicemente

SEARCHING su grafi, ed era quello che fino ad ora abbiamo chiamato edge

searching. La necessità di aggiungere alla parola searching la parola EDGE

naque in seguito, e precisamente quando fu introdotta una diversa versione

del problema. Al problema originale fu dato il nome di EDGE SEARCHING,

mentre al nuovo problema fu dato il nome di NODE SEARCHING. I nomi

hanno un significato specifico all’interno dell’interpretazione del problema.

Nel primo caso un searcher per decontaminare un arco ha bisogno di scorrere

lungo l’arco stesso, mentre nella seconda impostazione del problema i

searcher sono posizionati solo sui nodi, perdendo la possibilità di muoversi

lungo un arco per decontaminarlo. Alla luce di questi chiarimenti affrontiamo

in maniera particolareggiata le analogie e i rapporti che intercorrono fra

queste due visioni del problema della decontaminazione di un grafo.

Usando al massimo un searcher in più per attraversare ogni arco che è

controllato, possiamo in generale convertire una strategia di node searching

in una di edge searching.

Anche una strategia di edge searching può essere trasformata in una di node

searching, usando temporaneamente un searcher extra per i movimenti dove

un guardiano scorre lungo l’ultimo arco contaminato incidente su esso

(questo è l’unico caso in cui l’edge searching può risparmiare searchers).

26
Abbiamo così mostrato che:

LEMMA 1.7 (KP 86)

Per ogni grafo G, ns(G)-1 es(G) ns(G)+1.

Possiamo facilmente costruire gli esempi mostrando che tutti e tre i casi sono

possibili (vedere la seguente figura).

1. es(G)=1 ns(G)=2

2. es(G)=5 ns(G)=4

3. es(G)=ns(G)=2

Partendo dalle osservazioni fatte sopra, approfondiamo i rapporti che

intercorrono tra edge searching e node searching. Attraverso l’analisi delle

relazioni tra i due problemi riusciremo a dare una valida dimostrazione del

27
fatto che anche per il node searching sussiste l’NP-completezza del

problema. La linea che seguiremo all’interno della dimostrazione, è quella di

ridurre il problema dell’edge searching di un grafo G al problema del node

searching di un grafo Gv in cui ogni arco a,b di G è sostituito da tre archi in

serie; a,m1 m1,m2 m2,b .

Chiamiamo m1e m2 vertici di mezzo, i vertici di G vertici iniziali.

a b a m1 m2 b

Es.
Gv
G

TEOREMA 1.8

es(G)=ns(Gv)-1

DIMOSTRAZIONE 1.8

È immediato osservare che ns(Gv) es(G)+1. In realtà, data una strategia di

edge searching su G, possiamo realizzare il node searching su Gv con al

massimo un searcher in più, come segue: un arco di G è pulito con un

searcher, ma noi puliamo i corrispondenti tre archi di Gv, usando, se

necessario, un searcher extra per lo scorrimento.

28
Node searching di Gv
Edge searching di G

1 1 2 1

Per la direzione opposta della dimostrazione, consideriamo una strategia di

node searching ottimale di Gv nella forma descritta nel Corollario 1.20. Senza

perdere in generalità , possiamo anche assumere che quando un searcher è

posizionato su di un vertice di mezzo di un arco triplo di Gv almeno uno dei

suoi vertici iniziali ha già accettato un searcher. Possiamo sempre rinviare il

posizionamento di searcher in vertici di mezzo finchè questa condizione non

è realizzata. Poiché nessun searcher può essere cancellato da un vertice di

mezzo finchè il vertice iniziale a lui adiacente non sia decontaminato, questo

rinvio non causa problemi.

E’ conveniente, per scopi di conteggio, avere una etichetta numerica

associata a ogni searcher.

1 2 3 4

Anche nelle pagine seguenti faremo un grande utilizzo di queste etichette che

ci permetteranno di seguire individualmente i searcher all’interno del grafo,

potendo così tracciare una mappa degli spostamenti che realizzeranno.

29
Definiamo ora un edge searching di G simulando una strategia di node

searching da Gv, come descritto sopra. Nella simulazione, per ogni searcher

che mettiamo su Gv, poniamo al più un nuovo searcher su G, con

originariamente lo stesso nome. I nomi dei searcher su G possono cambiare

nel processo ma di solito per ognuno di essi ci sarà un corrispondente con lo

stesso nome su Gv, l’unica eccezione sarà fatta nel seguito per la pulizia.

Le regole sono le seguenti:

1) Per ogni searcher posizionato su di un vertice iniziale di Gv, se il

corrispondente vertice di G non è controllato, posizioniamo su di esso un

searcher con lo stesso nome (A). Altrimenti, semplicemente cambiamo il

nome del guardiano con il nome del searcher appena usato su Gv (B);

Gv

G A G B
3

1 1

30
2) Per ogni searcher cancellato da un vertice iniziale di Gv, cancella il

searcher, se esiste, dal corrispondente vertice di G;

3) Quando un searcher è posizionato su di un vertice di mezzo m1 di un arco

triplo (a,m1,m2,b) di Gv in cui m2 è contaminato, pulisce l’arco a,b di

G, se esso è contaminato. Ricordiamo che in questo caso o a o b hanno un

searcher in Gv e, quindi anche in G. Se non avviene nessuna

ricontaminazione, la pulizia di a,b in G è realizzata facendo scorrere

uno dei searcher partendo o da a o da b verso l’altro nodo. Altrimenti, un

nuovo searcher è utilizzato per lo scorrimento. In entrambi i casi, il nome

del searcher fatto scorrere è cambiato in quello del searcher su m1. Se

necessario questo searcher è lasciato come guardiano del vertice nella

direzione in cui è stato fatto scorrere;

31
Gv

G G

4) Non facciamo niente negli altri casi.

Primo, proviamo che le regole sopra descritte definiscono un edge searching

di G.

Quando cancelliamo un searcher da un vertice “a” di G, in accordo alla

regola 2, ogni vertice di mezzo in Gv adiacente ad “a” deve aver accettato un

searcher. Ma allora con la regola 3 tutti gli archi incidenti su a in G devono

essere puliti.

Proviamo ora che il numero di searcher usato su G è al massimo ns(G v).

Come indicato, questo è sufficiante a mostrare che i nomi dei searcher su G

sono correttamente manipolati.

32
La cancellazione di un searcher da un vertice iniziale di G v non causa

problemi poiché se c’è un searcher sinonimo su G, esso sarà sul vertice

corrispondente e così sarà cancellato.

Supponiamo che in Gv stiamo per cancellare un searcher nominato s e

posizionato, come descritto in 3, su un vertice di mezzo m1. Il corrispondente

searcher in G, dovrà essere o su a o su b. Ma a è pulito in G v. Così o non

c’era ragione per posizionare un searcher nominato s su a in G o questo

searcher ha cambiato il suo nome quando ha accettato un searcher in G v. Con

un argomento simile, l’unica possibilità è avere s su b in G, e b essere

contaminato in Gv. Ma allora, in Gv, m2 deve avere un searcher con nessun

sinonimo usato in G. Questo searcher starà su m2 finchè b riceve un searcher

in Gv. Ma quando questo accade, il nome s sarà cambiato. Così il searcher su

m2 utilizzerà per la sorveglianza un searcher su G, non avendone con lo

stesso nome su Gv.

Finalmente, proviamo che, in G, attualmente usiamo ns(Gv)-1 searcher.

Consideriamo il posizionamento di un searcher s con il quale aumentiamo il

numero di searcher su Gv a ns(Gv). La prossima mossa deve essere una

mossa di cancellazione, e, dal Corollario 1.20, esso è s, o un immediato

vicino di s, che deve essere cancellato. Se s è come in 3), allora un searcher

da a deve essere il prossimo cancellato. Ma allora non c’è un nuovo searcher

usato su G, poiché questo searcher su a può essere usato per lo scorrimento.

Se s è posizionato su di un vertice iniziale a ed è il prossimo cancellato,

allora ancora su G non mettiamo nuovi searcher. Questo è così, perché tutti

gli archi incidenti su a in G, sono stati puliti prima del posizionamento di a.

Se, finalmente, il searcher per essere rimosso è posizionato nel vertice di

33
mezzo m1 di una tripla (a,m1,m2,b), allora a,b sono state pulite prima del

posizionamento di a, così nessun nuovo searcher è usato in G. Naturalmente,

in tutti i casi potremmo avere rinominazioni o scorrimenti di searcher

esistenti.

Questo mostra che al massimo ns(Gv)-1 searcher sono usati e completa la

dimostrazione.

Una volta che abbiamo questo teorema segue di conseguenza:

COROLLARIO 1.9

Il problema di decidere, dato un grafo G e un intero k, se ns(G) k è NP-

Completo.

La relazione di equivalenza fra le due versioni del problema della

decontaminazione, è da considerarsi limitata solo al caso generale. Infatti se

ad esempio viene trovata una soluzione polinomiale per l’edge searching su

di una fissata classe di grafi, non è detto che questa soluzione possa essere

ridotta ad una soluzione per il node searching. Questo perché, nella riduzione

presentata sopra la struttura del grafo viene profondamente modificata, con il

rischio che il nuovo grafo non appartenga più alla classe di partenza. Quindi

nel seguito opereremo sempre una distinzione tra algoritmi che lavorano con

l’edge o il node searching.

1.7 LA RICONTAMINAZIONE NON AIUTA NELL’EDGE SEARCHING


Definiamo anche una versione progressiva di edge searching, ossia una

versione nella quale la ricontaminazione non è considerata. Il corrispondente

34
numero ottimale di searcher (progressive edge search number) è denotato con

pes(G).

TEOREMA 1.10 (La 93)

Per tutti i grafi non orientati G, pes(G)=es(G), ossia la ricontaminazione non

aiuta nell’edge searching.

Una implicazione di questo importante risultato è che esiste sempre una

strategia ottimale che termina dopo un numero lineare di passi. Una strategia

che possiede questa caratteristica viene detta MONOTONA. Il seguente

corollario esplicita i risultati che si possono ottenere dal teorema1.10.

COROLLARIO 1.11(La 93)

Per ogni grafo G c’è sempre una strategia di edge searching ottimale , che

soddisfa le seguenti due condizioni:

1. Nessun vertice o arco è visitato due volte;

2. Una volta che tutti gli archi incidenti su un vertice sono puliti, ogni

searcher su questo vertice è immediatamente cancellato.

La data di pubblicazione del lavoro di LaPaugh non deve trarre in inganno,

infatti i suoi risultati sono apparsi sin dal 1982. Addirittura, al momento della

loro pubblicazione, avvenuta nel 1993, Bienstock e Seymour (BS 91) avevano

già trovato una nuova dimostrazione del Teorema 1.10, molto più semplice e

lineare di quella proposta da LaPaugh nel suo lavoro. Lo stesso LaPaugh alla

fine della sua pubblicazione fa presente al lettore i risultati di Bienstock e

35
Seymour. Per dimostrare il teorema 1.10 ovviamente utilizzeremo la

dimostrazione più semplice (BS 91).

DIMOSTRAZIONE TEOREMA1.10(BS 91)

Introduciamo una nuova versione di searching su grafi, chiamata mix, la

quale combina le caratteristiche del node e dell’edge searching. In questa

versione, un arco è pulito o attraverso lo scorrimento di searcher o con il

posizionamento di searcher sugli endpoint. Sottolineiamo che ad ogni fase al

più viene pulito un arco. Più precisamente, un mix-search in G è una

sequenza di coppie

(A0,Z0),(A1,Z1),…,(An,Zn)

(intuitivamente, Zi è l’insieme di vertici occupati da searcher

immediatamente prima dell’(i+1)-esimo passo, e Ai, è l’insieme di archi

puliti) tale che:

1) per 0 i n, Ai E(G) e Zi V(G);

2) per 0 i n, ogni vertice incidente con un arco in Ai e con un arco in

E(G)-Ai appartiene a Zi;

3) A0= , An=E(G);

4) Per 1 i n, o

a) (posiziona nuovi searcher) Zi Zi-1 e Ai=Ai-1 oppure

b) (rimuovi searcher) Zi Zi-1 e Ai è l’insieme di tutti gli archi “e” tali che

ogni cammino che contiene “e” ed un arco di E(G)-Ai-1 ha un vertice

interno in Zi, e in particolare Ai Ai-1, oppure

c) (node searching e) Zi=Zi-1, e Ai=Ai-1 e per qualche arco e E(G)-

Ai-1 con entrambi gli endpoint in Zi-1, oppure

36
d) (edge searching e) Zi=(Zi-1- u ) v per qualche u Zi-1 e

v V(G)-Zi-1, e c’è un arco e E(G)-Ai-1 con gli endpoint u,v, e ogni

altro arco incidente su u appartiene a Ai-1, e Ai=Ai-1 e .

Il node searching è definito in modo simile, eccetto che per la regola d). Per

formalizzare l’edge searching con questa notazione, dobbiamo permettere a

Zi di essere un multinsieme invece che un insieme, perché può essere

importante che due searcher occupino lo stesso vertice. Con questa modifica

un edge searching è definito dalla cancellazione della regola c).

Denotiamo con ms il mix search number di un grafo G. Segue che

ms(G) ns(G),es(G).

Sia dato un grafo G, costruiamo i grafi Ge e Gn riposizionando ogni arco di G

attraverso due archi in serie o due archi in parallelo. Allora es(G)=ms(Ge) e

ns(G)=ms(Gn). Inoltre, una strategia di mix-searching ottimale monotona su

Ge e Gn può essere convertita rispettivamente in una strategia monotona

ottimale per edge e node searching in G. Quindi i risultati di monotonicità

per mix-searching implicheranno la monotonicità per l’edge e il node

searching, e quindi implicano il teorema1.10.

Sia G un grafo. Se X E(G) sia (X) l’insieme di vertici che sono gli

endpoint di un arco in X e anche di un arco in E(G)-X. Nota che (X)=

(E(G)-X). Inoltre, soddisfa la seguente disuguaglianza:

(X Y) + (X Y) (X) + (Y) per ogni X,Y,

perché ogni vertice contato sul lato sinistro è almeno contato quanto sul lato

destro.

Una crociata in G è una sequenza (X0,X1,…,Xn) di sottoinsiemi di E(G), tali

che X0= , Xn=E(G), e Xi-Xi-1 1 per 1 i n. La crociata usa un numero k

37
di searcher se (Xi) k per 0 i n.

LEMMA 1.12

Se ms(G) k allora c’è una crociata in G che usa un numero k di searcher.

DIMOSTRAZIONE

Sia (A0,Z0),(A1,Z1),…,(An,Zn) un mix-searching in G con Zi k. Allora ogni

(Ai) Zi e quindi ogni (Ai) k, e così (A0,A1,…,An) è una crociata in G che

usa un numero k di searcher.

L’inverso del lemma appena scritto è vero (con qualche eccezione) ma non

ovvio. L’uso delle crociate permette di dimostrare facilmente risultati di

monotonicità, come segue.

Una crociata (X0,X1,…,Xn) è progressiva se X0 X1 … Xn e Xi-Xi-1 =1 per

1 i n.

LEMMA 1.13

Supponiamo ci sia una crociata in G che usa un numero k di searcher.

Allora c’è una crociata progressiva in G che usa un numero k di searcher.

DIMOSTRAZIONE

Scegliamo una crociata (X0,X1,…,Xn) che usa un numero k di searcher, tale

che le seguenti 5 affermazioni sono verificate:

1) 0 i n( (Xi) +1) è minimo;

2) 0 i n Xi è minimo;

j con 1 j n.

38
3) Xj-Xj-1 =1

(Se Xj-Xj-1 1, e se Xj Xj-1 comunque (X0,X1,…,Xj-1,Xj+1,…,Xn) è una

crociata che verifica 1));

4) (Xj-1 Xj (Xj)

(Altrimenti (X0,X1,…,Xj-1,Xj-1 Xj,Xj+1,…,Xn) è comunque una crociata che

verifica 1));

5) Xj-1 Xj.

Dalla disuguaglianza per , sopra definita, abbiamo che:

(Xj-1 Xj + (Xj-1 Xj) (Xj-1) + (Xj) .

Dalla 4), segue che (Xj-1 Xj) (Xj-1) .

Quindi (X0,X1,…,Xj-2,Xj-1 Xj,Xj,Xj+1,…,Xn) è una crociata che usa k

searcher.

Dalla 2), Xj-1 Xj Xj , e l’affermazione segue.

Dalla 3) e dalla 5) deduciamo che (X0,X1,…,Xn) è progressiva.

LEMMA 1.14

Sia G tale che ogni vertice è incidente con almeno due archi.

Sia (X0,X1,…,Xn) una crociata progressiva che usa un numero k di searcher,

e per 1 i n sia Xi-Xi-1= ei . Allora c’è un mix search monotono di G che usa

un numero k di searcher, tale che gli archi di G sono decontaminati in

ordine e1,e2,…,en.

DIMOSTRAZIONE

Costruiamo un mix-search induttivamente.

39
Supponiamo che 1 j n, e abbiamo gli archi puliti e1,..,ej-1 in ordine, e nessun

altro arco è stato pulito. Sia A l’insieme di tutti i vertici v V(G) tali che

ogni arco incidente su v è in Xj-1. Ogni vertice in (Xj-1) è occupato da un

searcher, perché vi incidono un arco pulito e un arco contaminato.

Rimuoviamo tutti gli altri searcher ( non avviene ricontaminazione). Poiché

ej Xj-1, esso non ha endpoint in A. Sia N l’insieme di endpoint di ej. Se

N (Xj-1) k, possiamo posizionare nuovi searcher sugli endpoint di ej e

dichiarare questi puliti. Assumiamo allora che N (Xj-1) >k. Poiché

(Xj-1) k segue che N (Xj-1). Scegliamo V N - (Xj-1). Inoltre,

N- (Xj-1) (Xj), perché ogni vertice di G è incidente con un numero 2 di

archi; segue che (Xj-1) (Xj).

Scegliamo u (Xj-1)- (Xj). Allora u N, ed ej ha endpoint u,v ed u non

incide con nessun arco in E(G)-Xj-1 eccetto ej. Così possiamo pulire ej

facendo scorrere il searcher da u lungo ej fino a v.

Deduciamo allora:

LEMMA 1.15

Se c’è un mix-search di G che usa un numero k di searcher, allora c’è un

mix-search monotono che usa un numero k di searcher.

DIMOSTRAZIONE

Per quanto dimostrato nei lemmi precedenti:

ms(G) k crociata k crociata progressiva k ms(G)

monotono k

40
Per tirare le somme di quanto abbiamo appena mostrato, enunciamo il

seguente teorema:

TEOREMA 1.16

Sia G un grafo tale che ogni vertice è incidente ad almeno due archi. Per k 0,

le seguenti affermazioni sono equivalenti:

1) ms(G) k;

2) c’è una crociata in G che usa un numero k di searcher;

3) c’è una crociata progressiva in G che usa un numero k di searcher;

4) c’è un mix-search monotono in G che usa un numero k di searcher.

Dal lemma 1.15 segue il nucleo della dimostrazione al teorema 1.10.

Sia Ge un grafo ottenuto da G attraverso il riposizionamento di ogni arco di G

con due archi in serie. Per mostrare che c’è un edge search monotona di G

che usa es(G) searcher, è sufficiente, utilizzare il lemma1.15, per mostrare

che es(G) ms(Ge), e che un mix-search monotono di Ge produce un edge-

search monotono per G. Iniziamo con:

LEMMA 1.17

es(Ge) es(G), e un edge search monotono di Ge può essere convertito in un

edge search monotono per G che usa lo stesso numero di searcher.

DIMOSTRAZIONE

Chiaramente es(Ge) es(G), ogni edge searching di G può essere convertito

facilmente in un edge searching per Ge. Ge ha due archi in serie per ogni arco

f di G; siano questi archi f’ e f’’. Sia H ottenuto da Ge contraendo tutti gli

archi f’’. Ogni vertice v di H è ottenuto da Ge, identificando inoltre, un

41
sottoinsieme Cv di vertici di Ge contratti. Forniamo ora un edge searching di

H attraverso le seguenti regole:

se all’i-esimo passo il searcher s è sul vertice u V(Ge), allora su H, il

searcher s è posto sul vertice v V(H), dove u Cv. Questo soddifa le

richieste del lemma.

Deduciamo dal lemma appena dimostrato che ms(Ge) es(G), e

ms(Ge) es(Ge). Per provare questo, un mix searching monotono può essere

convertito in un edge searching monotono per G.

LEMMA 1.18

Sia G un grafo tale che ogni arco ha un endpoint incidente ad un altro arco.

Allora un mix search monotono di G che usa un numero k di searcher può

essere convertito in un edge search monotono di G che usa un numero k di

searcher.

DIMOSTRAZIONE

Scegliamo un mix searching monotono che usi un numero k di searcher,

tale che più archi possibili siano puliti per scorrimento. Supponiamo, per

contraddizione, che qualche arco f non sia pulito per scorrimento. Sia f pulito

all’i-esimo passo; così immediatamente prima dell’i-esimo passo ci sono dei

searcher ad entrambi gli endponit u e v di f. Sia v incidente con un unico

altro arco g. Riorganizziamo l’i-esimo passo dell’esplorazione attraverso altri

tre passi, come segue.

42
Se g è ancora contaminato immediatamente prima dell’i-esimo passo,

puliremo f come segue:

1) Rimuoviamo il searcher da v;

2) Posizioniamolo su u;

3) Facciamolo scorrere lungo f fino a v.

Se g è pulito immediatamente prima dell’i-esimo passo, puliamo f come

segue:

1) Facciamo scorrere il searcher da v lungo f fino a u;

2) Rimuoviamolo da u;

3) Posizioniamolo su v.

Negli altri casi esploriamo f attraverso uno scorrimento, e possiamo

continuare il mix search come prima. Questo contraddice la scelta del mix

search. Segue che ogni arco è pulito attraverso uno scorrimento, come

richiesto.

Dal teorema 1.16, dal lemma 1.17 e dal lemma 1.18 è provato quanto

affermato dal teorema1.10.

1.8 LA RICONTAMINAZIONE NON AIUTA NEL NODE


SEARCHING
La versione progressiva del node search number è denotata con pns(G).

43
Il prossimo teorema, come dimostrato per l’edge searching, afferma che la

ricontaminazione non aiuta nella strategia di node searching. L’idea alla base

della dimostrazione, è quella di definire una strategia di node searching

ottimale di G simulando un edge searching ottimale su di un grafo Ge

ottenuto modificando G. Il risultato allora segue dal teorema 1.10.

TEOREMA 1.19(KP 86)

Per ogni grafo non orientato G, pns(G)=ns(G).

DIMOSTRAZIONE

Costruiamo un grafo Ge da G, riposizionando ogni arco di G con tre archi

paralleli che connettono la stessa coppia di vertici.

Fig. Aggiunta di due archi.

Fig. Riposizionamento di archi tripli su tutto il grafo G.

Proveremo ora che

ns(G)=es(Ge)-1

44
In una direzione, vale a dire es(Ge)-1 ns(G), la dimostrazione è quasi ovvia,

poiché con un searcher extra possiamo portare a termine tutti i necessari edge

searching di Ge, simulando un node searching di G.

Per l’altra direzione, possiamo portare a termine un node searching di G

seguendo passo passo una strategia ottimale di edge searching di Ge della

forma descritta dal Corollario1.11. Osserviamo che in ogni strategia, non ci

può essere alcun movimento tale che un searcher che già si trova su di un

vertice è fatto scorrere verso un vertice contaminato. Questo è vero, perché

comunque due vertici adiacenti sono uniti con più di un arco (attualmente 3).

Quindi se alla fine di una mossa appare un searcher su di un vertice

precedentemente contaminato, questo searcher è nuovo nel grafo.

Le regole per la simulazione sono le seguenti:

1) Quando un searcher è posizionato su un vertice contaminato di Ge ,

probabilmente dopo averlo fatto scorrere lungo un arco incidente a questo

vertice, un searcher è posizionato sul corrispondente vertice di G;

45
2) Quando un searcher è rimosso da un vertice di Ge, probabilmente è stato

fatto scorrere lungo un arco incidente a questo vertice, il searcher dal

corrispondente vertice di G è cancellato. Nota che se scorrendo prende

posizione, il secondo endpoint dovrebbe essere controllato, così, dopo lo

scorrimento il searcher è cancellato dal grafo Ge.

Questa simulazione definisce un node searching di G. Questo vale perché

durante la pulizia di un triplo arco in Ge, c’è sempre un momento in cui

entrambi i suoi endpoint sono controllati.

E’ immediato osservare che il numero di searcher su G è al più es(Ge).

Per provare che questo limite può essere ridotto di uno, è sufficiente mostrare

che ogni movimento che alza il numero totale di searcher su Ge a es(Ge),

deve essere uno scorrimento lungo un arco in cui entrambi gli endpoint sono

controllati. Mentre su G si traduce in un nulla di fatto.

Searcher in più

Es(Ge) ns(G)

46
Consideriamo una contraddizione, il numero di searcher su Ge si è alzato a

es(Ge) quando posizioniamo un nuovo searcher come nella regola 1. Il

prossimo movimento deve essere una cancellazione e, tramite il

Corollario1.11 possiamo aver completato la pulizia di tutti gli archi incidenti

su di un vertice. Ma questo è impossibile, poiché con tale movimento,

possiamo nel migliore dei casi, pulire il primo arco contaminato di un arco

triplo. Questo completa la dimostrazione.

Ricordiamo che una strategia rappresenta l’insieme delle mosse che sono

effettuate dai searcher per realizzare una decontaminazione completa di un

grafo. Su questa base ovviamente una strategia ottima, sarà una strategia che

utilizza il minor numero possibile di searcher.

COROLLARIO 1.20

C’è sempre una strategia di node searching ottimale in cui nessun vertice è

visitato due volte da un searcher e in cui ogni searcher è cancellato

immediatamente dopo che tutti gli archi incidenti su esso sono stati puliti (i

legami sono rotti arbitrariamente).

47
BIBLIOGRAFIA CAPITOLO 1:

(BS 91) Bienstock, D.-Seymour, P. : Monotonicity in graph


searching. Journal of Algorithms, 12 – pp. 239-245 -
1991

(Br 67) Breisch, R.L. : An intuitive approach to speleotopology.


Southwestern Cavers, 6 No.5 – pp. 72-78 - Published by
the Southwestern Region of the National Speleological
Society - 1967

(GJ 79) Garey, M.R. – Johnson, D.S. : Computers and


intractability: a guide to the theory of NP-
Completeness. Freeman, San Francisco - 1979

(KP 86) Kirousis, L.M. – Papadimitriou, C.H. : Searching and


Pebbling – Theoretical Computer Science, 47 –
pp. 205-218 - 1986

(La 93) LaPaugh, A.S.: Recontamination does not help to


search a graph. Journal of ACM, 40 n.2 – pp. 224–245 -
1993

(MHGJP 88) Megiddo,N. - Hakimi,S.L. - Garey,M.R. - Johnson,D.S.-


Papadimitriou,C.H. : The complexity of searching a
graph. Journal of ACM, 35 n.1 – pp. 18-44 – 1988

48
(Pa 76) Parsons, T.D. : Pursuit-evasion in a graph . Lecture
Notes in Mathematics, 642 – pp.426-441 - Edited by
A.Dold and B.Eckmann. - 1976

(Re 85 film) Reitman, I. - Aykroyd, D.: Ghostbusters. Con Dan


Aykroyd nella parte di uno degli acchiappafantasmi -
1985 - USA

(Sc 79 film) Scott, R.– O’ Bannon, D. – Rambaldi, C.: Alien.


Sigourney Weaver nella parte del Tenente Ripley - 1979
- USA

49

You might also like