Ausarbeitungen zum Seminar
“Algorithmische Geometrie”
Veranstalter: Mathias Katzer & Marc Hanheide
Sommersemester 2003
28. Januar 2004
1. Christoph Hermes: Konvexe Hüllen
2. Andrea Matyssek: Polygone und der Sweep-Line-Algorithmus
3. Nadine Brandt: Bereichsbäume, Bereichssuche und Fractional Cascading
4. Christian Höner zu Siederdissen: Quadtrees
5. Jan Schäfer: Der KD-Baum
6. Marion Zysik: Triangulation
Alle Arbeiten in dieser Zusammenstellung sind von Studenten erstellt. Es besteht keinerlei Gewähr bzgl. der Korrektheit und Gültigkeit der Aussagen.
1
Seminar Algorithmische Geometrie
Konvexe Hüllen
Christoph Hermes
hermes@hausmilbe.de
30. September 2003
Inhaltsverzeichnis
1
Einleitung
1
2
Vorüberlegungen
2.1 Mathe... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 grundlegende Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Eigenschaften der konvexen Hülle . . . . . . . . . . . . . . . . . . . . . . .
2
2
3
3
3
Algorithmen für konvexe Hüllen
3.1 Gift Wrapping (Einwickeln)
3.2 QuickHull . . . . . . . . . .
3.3 GrahamScan . . . . . . . . .
3.4 GrahamScan (improved) . .
3.5 Divide&Conquer-Verfahren .
4
4
5
7
9
9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
Ein Ausflug in die 3D-Welt
12
5
Fazit
14
1
Einleitung
Die konvexe Hülle (oft auch nur „die Hülle“ genannt) ist eines der verbreitetsten Strukturen
innerhalb der algorithmischen Geometrie. Einfach gesagt ist sie das kleinstmögliche Polygon,
das in einer Ebene von Punkten alle Punkte umschließt. Bildlich gesprochen kann man sie sich
als ein Gummiband vorstellen, das um eine Menge von Nägeln gespannt ist.
Aus dieser wichtigen Eigenschaft heraus ergeben sich nun eine Reihe von Anwendungsmöglichkeiten und das nicht nur innerhalb der Geometrie:
Kollisionsabfrage: Die Geometrie eines Roboters kann als relativ komplex angesehen
werden, so dass es bei der Kollisionsabfrage innerhalb eines Pathfinding zu sehr vielen Berechnungen kommen kann. Wird aber zuerst die konvexe Hülle des Gefährts bestimmt, so vereinfacht sich auch die Geometrie des Roboters erheblich; es verringern
sich somit auch die Berechnungen, was vor allem bei der Echtzeitplanung von Vorteil
ist. Die Vereinfachung von komplexen Gebilden wird allgemein auch als Näherung für
die Objektgeometrie bezeichnet.
Data Mining: Daten mit gleichen Eigenschaften können mit Hilfe der konvexen Hülle
zusammengefasst werden. So lassen sich dann verschiedene Hüllen auf Überschneidung
und dergleichen überprüfen.
smallest box: Bei diesem Problem soll (wie der Name schon treffend aussagt) die kleinste mögliche Box berechnet werden, in die eine Punktmenge passt. Dies gilt vor allem im
3D-Bereich. Die Berechnung der konvexen Hülle ist hier zwingend notwendig, möchte
man nicht jeden Punkt mit jedem vergleichen. Allein durch die Hülle werden im Allgemeinen schon sehr viele Punkte ausgesondert.
Die Stärke der konvexen Hülle liegt also vor allem in der Vereinfachung von bereits bestehenden Daten, die als Grundlage für weitere Berechnungen verwendet werden.
In dieser Ausarbeitung wird mit genaueren (mathematischen) Definitionen für die konvexe
Hülle begonnen, die teilweise in den Algorithmen wieder erscheinen. Es wird noch kurz darauf
eingegangen, auf welchen Daten in diesen Beispielen gearbeitet wird. Danach werden einige
wichtige Eigenschaften noch zusätzlich zu den Definitionen behandelt, die sie ergänzen sollen
und eher in die Kategorie Trickkiste passen. Nun erst wird mit der Beschreibung der Verfahren
zur Lösung des Problems der konvexen Hülle begonnen.
In der Darstellung der nachfolgenden Algorithmen für die Berechnung der konvexen Hülle
wird allerdings bewusst auf eine besondere Programmiersprache (Java, C(++), etc.) verzichtet
und nur ein Pseudocode gegeben, da sich geometrische Algorithmen im Allgemeinen leichter
auf einer höheren Abstraktionsebene besprechen lassen, als sie direkt in eine Sprache zu implementieren. Diese Schwierigkeiten beruhen vor allem auf der Tatsache, dass ein Computer
nicht exakt rechnen kann und somit sämtliche Ausnahmefälle betrachtet werden müssten.
In dieser Ausarbeitung werden zum großen Teil nur die Grundalgorithmen in der 2D-Ebene
betrachtet, in der „Realität“ jedoch wird meist mit höheren Räumen gearbeitet. Darum werden
zum Schluss einige Ansätze für die Anwendung des Problems in 3D gegeben.
Natürlich darf am Ende die Diskussion, welcher der aufgezeigten Algorithmen nun der
optimalste für jedes Problem dieser Art ist, nicht fehlen.
1
2
Vorüberlegungen
Bevor wir mit der Darstellung und Beschreibung der eigentlichen Algorithmen beginnen, sind
noch einige Vorüberlegungen fällig, die nachher bei der Darstellung der einzelnen Verfahren
auftreten und erheblich zum Verständnis beitragen.
2.1 Mathe...
Ein Problem präzise zu formulieren, heißt in der Informatik meist, es mathematisch zu beschreiben. Das gilt vor allem für das Problem der konvexen Hülle. Es sei aber darauf hingewiesen, dass es mehrere Definitionen für die konvexe Hülle und Konvexität an sich gibt, die
sich zwar zumeist alle entsprechen, aber dennoch verschieden ausgeprägt in den Algorithmen
erscheinen können. Abbildung 1 zeigt anschaulich den Unterschied zwischen einem konvexen
und nicht-konvexen Polygon.
y
x
keine konvexe Hülle
konvexe Hülle
Abbildung 1: Vergleich zweier Polygone auf Konvexität
Die Definitionen und damit auch die Eigenschaften folgen auf dem Fuß:
1. Eine Menge wird als konvex bezeichnet, wenn das Segment mit dig in der Menge enthalten ist: vollstän-
Diese Aussage kann als primäre Definition aufgefasst werden. Man beachte, dass die
Definition nicht auf eine Dimension beschränkt ist. Es sollte klar sein, dass der innere
Winkel eines konvexen Polygons nicht sein darf, bzw. dass es keine „Dellen“ hat,
wie das erste Bild in Abbildung 1 zeigt.
2. Eine Konvexkombination1 von Punkten ist eine Summe der Form
Die Punkte !#" $
&%
'
$ &%
)(+*
kann (und sollte man auch höheren Dimensionen) als Vektoren ansehen.
Somit ist das in Def. 1 besprochene Segment eine Konvexkombination aus den Punkten und . Ein Dreieck wäre demnach eine Konvexkombination aus seinen drei Endpunkten und in 3D bestünde ein Tetraeder aus der Konvexkombination seiner vier Endpunkte. Man beachte, dass diese Objekte selbst wieder konvex sind.
1
Ein sehr gutes Beispiel hierzu kann man in [MBrg] nachlesen.
2
3. Eine konvexe Hülle einer Menge von Punkten , ist die Menge aller Konvexkombinationen der Punkte von , . Sie wird häufig mathematisch als -.0/1,32 geschrieben.
4. Die konvexe Hülle einer Menge von Punkten , in 4 Dimensionen ist die Menge aller
Konvexkombinationen von 46587 (oder weniger) Punkten von , .
Somit ist die Hülle einer Menge von Punkten im zweidimensionalen Bereich eine Konvexkombination einer Untermenge von drei Punkten, die je ein Dreieck aufspannen.
5. Die konvexe Hülle einer Menge von Punkten , in einer Ebene ist das kleinste Polygon
9
9;:
9=<!9>:?
, das , einschließt. Somit gibt es kein anderes Polygon
für das gilt:
, .
6. Die konvexe Hülle einer Menge von Punkten , in einer Ebene ist das konvexe Polygon
9
, das , einschließt und die kleinste Fläche besitzt.
7. Die konvexe Hülle einer Menge von Punkten , in einer Ebene ist das konvexe Polygon
9
, das , einschließt und den kleinsten Umfang besitzt.
Die Definitionen 5-7 erscheinen trivial, legen aber dennoch im einzelnen fest, dass es nur
eine konvexe Hülle geben kann, die exakt charakterisiert wird.
2.2 grundlegende Datenstrukturen
Bevor man Algorithmen zur Lösung eines Problems entwirft, sollte man wissen, auf welche
Art von Daten sie angewendet werden sollen; in unserem Fall operieren wir auf Punkten in
einer Ebene (im dreidimensionalen Raum) mit dem Ergebnis ein Polygon (3D-Hülle) zur erhalten, dass alle Punkte einschließt. Diese Ansicht dient nur dazu, anschaulich die Algorithmen
zur Bestimmung der konvexen Hülle zu erläutern. In der Realität werden sie geeignet modifiziert werden müssen, um zum Beispiel auf verschiedenene Datensätzen arbeiten zu können.
Punkte (engl. Points) sind einfach darzustellen; viele Programmiersprachen (Java, C/C++,
etc.) bieten dafür sogar eigene Klassen an. Polygone lassen sich auf die Punktdarstellung zurückführen: Als eine Liste von Punkten, dessen Reihenfolge dem Entlanggehen den Polygons
entspricht. Die Realisierung einer solchen Liste kann durch einen Array oder einer (doppelt)
verketteten Liste erfolgen, abhängig von dem Algorithmus.
2.3 Eigenschaften der konvexen Hülle
Die Definitionen (siehe Abschnitt 2.1) liefern zwar schon eine gute Grundlage für die Entwicklung von Algorithmen für das dargestellte Problem, einige Besonderheiten sollten jedoch
trotzdem hervorgehoben werden.
Zu diesen Besonderheiten zählen vor allem die Extremalpunkte einer konvexen Hülle. Das
sind Punkte, die garantiert zur Hülle gehören und sich schnell und intuitiv bestimmen lassen. Sie werden häufig als Ausgangspunkte für die Algorithmen verwendet (als Ankerpunkte
oder Pivotelemente). Dessen Bestimmung in einer Ebene ist einfach: Es sind Punkte mit der
kleinsten (größten) @ -Koordinate oder kleinsten (größten) A -Koordinate. Das enspricht der Bestimmung der äußersten Punkte in den vier Himmelsrichtungen.
In Definition 1 wurde ein weiterer Aspekt nebenbei erwähnt, der hier aber noch mal deutlich hervorgehoben werden sollte: Der innere Winkel der Hülle. Es ist klar, dass er nicht BDC
sein darf, da sonst eine „Delle“ entsteht und somit keine konvexe Hülle mehr vorhanden ist.
3
Eine weitere Winkeleigenschaft kann aber auch wie folgt beschrieben werden: Gegeben sei
eine Menge von Punkten E , ihre konvexe Hülle F)G0HIEKJ8L E und drei Punkte MNOPNRQTS
E U MOVQWXFGYHIE3J , wobei sich MOZQ gegen den Uhrzeigersinn auf der Hülle dreht. Nun
gilt für alle Punkte Q\[PS]E3^V_`MNOPNRQVa :
b
b
H MOcN OVQdJfe
b
H MOPN OVQ [ J
Der angegebene Winkel ( ) sollte als innerer Winkel verstanden werden.
Die (Un-)Gleichung klärt auch gleichzeitig die Frage, ob Punkte, die sich auf dem Segment
zweier zusammenliegender Punkte der Hülle liegen (sich also durch die eine Konvexkombination zweier zusammenliegender Punkte darstellen lassen), noch zur Hülle gehören oder nicht.
(Die Antwort ist ja!)
3
Algorithmen für konvexe Hüllen
Die folgenden Algorithmen beschränken sich auf die Lösung des Problem in einer Ebene (2D)
mit einer Menge von Punkten. Es wird davon ausgegangen, dass alle Punkte dieser Menge
paarweise verschieden und keine drei Punkte kollinear sind.
3.1 Gift Wrapping (Einwickeln)
Zu den ersten Verfahren, die für die Bestimmung der konvexen Hülle entwickelt wurden, zählt
das Einwickeln (engl. wrap) der Menge von Punkten. Es ist dem naiven Verfahren nachempfunden, wie Menschen ein solches Problem mit Papier und Bleistift lösen würden.
jk
ghgi
tu
vw
no
O
pq
lm
rs
y
x
Abbildung 2: Einwickelverfahren graphisch
Daher ist die Beschreibung auch recht einfach (siehe Abb. 2): Man beginne mit einem
Punkt, der garantiert zur Hülle gehört, wie etwa der Punkt mit der kleinsten O -Koordinate
(hier x ), nehme einen horizontalen, in die positive verlaufenden Strahl und „schwenke“ ihn
gegen den Uhrzeigersinn, bis er auf einen weiteren Punkt trifft; dieser Punkt (M ) muss zur
Hülle gehören. Dann benutze man diesen Punkt als Angelpunkt und drehe weiter gegen den
Uhrzeigersinn, bis ein weiterer Punkt getroffen wird. Das Verfahren wird so lange wiederholt,
bis der Ausgangspunkt x wieder erreicht ist; das Paket ist nun eingewickelt.
Die etwas schwammige Formulierung „Schwenken“ beinhaltet nicht anderes als die Berechnung des Winkels2 y zwischen dem verlängerten Strahl der letzten beiden Punkte (hier
2
Dass es auch möglich ist, ohne die doch recht zeitaufwändigen trigonometrischen Funktionen bei der Berechnung von z aus zukommen, wird in [RSed, S. 405] gezeigt.
4
gestrichelt dargestellt) und der Verbindung des Angelpunktes zu jedem noch nicht betrachteten Punkt. Derjenige neue Punkt mit dem kleinsten Winkel ist ein Punkt der konvexen Hülle.
Der folgende Pseudocode zeigt dieses Verfahren noch einmal kurz:
1
2
3
4
5
6
7
8
9
10
11
12
Algorithmus wrap
Finde Pivotelement {| mit {P}~Y&V
Finde Punkt {c mit kleinstem zur Horizontalen {|`h]
{V{
{ |) {
while ({
{ {
for each {d
{\`} {{I {V¡{d
}
{V¢f£>&Z
¤{\¥}
Füge {Z¢ der Hülle hinzu
{¦{V¢
}
Zeile 3 ist ein Vorgriff auf die innere Schleife (Zeile 6-8), um die Bestimmung von § zu
ermöglichen. In Zeile 7 wird nur der Winkel zu jedem neuen Punkt berechnet, derjenige Punkt
mit dem kleinsten Winkel wird in Zeile 9 ermittelt.
Erfahrungsgemäß sind die meisten naiven Verfahren nicht immer die besten; nicht anders
verhält es sich mit der konvexen Hülle. Der Algorithmus berechnet immer wieder neu den
Winkel zu den noch nicht aufgenommenen Punkten, ohne evtl. vorher berechnete Informationen zu nutzen. Das macht eine Effizienzanalyse für den Zeitaufwand einfach (¨ ist Anzahl der
zu betrachtenden Punkte): ©
ª ­
¬«c
­
¨ ³
¨ ®µ´¥±
¨®°¯¤±3²
¶
·
¸
­
¨¹º±
Diese Abschätzung gilt nicht nur für den worst-case, sondern auch für den best-case »
­
¨ ¹±.
3.2 QuickHull
Dieser Algorithmus wurde in den späten 70ern von mehreren Wissenschaftlern unabhängig
voneinander vorgeschlagen. Es setzte sich der Name „QuickHull“ auf Grund der Ähnlichkeit
zu QuickSort durch, denn beide beruhen auf dem Divide&Conquer-Verfahren. Das Prinzip
ist einfach: Aus einer Menge von Punkten lassen sich viele Elemente schon mit wenigen Rechenschritten eindeutig als innere Punkte der Hülle identifizieren und somit ausschalten. Die
restlichen Punkte, die zwangsweise näher zur Hülle liegen, werden nun erst genauer betrachtet.
Diese allgemeine Formulierung lässt sie wie folgt präzisieren: In einem ersten Schritt (siehe Abb. 3) findet eine grobe Unterteilung der Punktmenge ¼ statt; dabei werden zunächst die
beiden horizontal am weitesten entfernte Punkte (entspricht Westen ½ und Osten ¾ ) ermittelt
und als Grenze für eine Unterteilung der Punkte in eine obere und untere Hälfte verwendet.
Der zweite, entscheidende Schritt (siehe Abb. 4) besteht in der getrennten Betrachtung der
beiden Hälften, die so lange rekursiv aufgerufen wird, bis nur noch die Hülle übrig bleibt.
Dabei wird aus der Punktmenge ¼ der Punkt ¿ mit dem weitesten Abstand zu ÀÂÁ bestimmt. ¿
kann nun als Punkt der Hülle betrachtet werden, so dass alle Punkte, die sich innerhalb des
Dreiecks ÀÂÁ¿ befinden, nicht zur Hülle gehören können. Sie werden eliminiert. Die verbleibenden Punkte (sollte es welche geben) werden nun wiederum in zwei Hälften (hier à und Ä )
5
ÏÐ
w
ãä
ÇÈ
ÅÆ
ÑÒ
áâ
ÕÖ
ÙÚ
ÓÔ
ÍÎ
ÛÜ
ßà
ËÌ
åæ
ÉÊ
c íî
ר
e
÷ø
b
Abbildung 3: erste Einteilung der Punkte
ûü
ç èç
èP
B
ùú
ÝÞ
ïð
A
óô
õö
ýþ
ÿ
ñò
ëì
a
éê
Abbildung 4: genauere Betrachtung des Randes
geteilt. Bei der Unterteilung werden die Segmente und als Vektoren aufgefasst, die eine
(in Pfeilrichtung) linke und rechte Seite haben. Der neuen Menge werden somit alle Punkte,
sich sich rechts von befinden und der neuen Menge alle Punkte, die sich rechts von befinden, zugeordnet3 . Der rekursive Aufruf erfolgt dann auf und .
Somit ergibt sich folgender Pseudocode für die Funktion QuickHull:
1
2
3
4
5
6
7
8
9
10
Algorithmus Quickhull
function QuickHull {
if ( ) {
return }
Punkt mit max. Abstand von !
"# Punkte rechts von !
$% Punkte rechts von return QuickHull &'"(*)+) QuickHull '$,
}
Ein Aufruf der Funktion geschieht dann folgendermaßen:
1
2
3
4
5
-. Punkt /0 mit 21435#6,798
:; Punkt /0 mit 2143 #6,<'=
"# Punkte oberhalb von ->:
$? Punkte unterhalb von ->:
QuickHull @-:A"(*)+) QuickHull B:CD-$,
Eine Effizienzanalyse erweist sich hier als weitaus schwieriger, als bei dem vorangegangenen Gift Wrapping. Man kann zwar schon erahnen, dass QuickHull ähnliche Effizienzen wie
QuickSort an den Tag legen wird, der endgültige Beweis fehlt aber noch.
Sei E die Menge der zu verarbeitenden Punkte und FHGJIKELI deren Anzahl. Die Teilung der
Punkte zu Anfang lässt sich innerhalb von MONPFRQ bewerkstelligen, die Kosten der rekursiven
Aufrufe hängen aber von I SI und I4HI ab. Sei TUGVI I und WXGJI4HI mit TZYHW[G\F,]X^_G`MONaFbQ .
Wenn die Zeitkomplexität für den Aufruf von Quickhull cdNPFRQ ist, dann lässt sich ceNPFRQ rekursiv
ausdrücken:
m
ceNPFRQG\M/NaFbQRYfcdNgThQbYfcdNaWiQ
3
(1)
Analog gilt natürlich, dass der Menge j alle Punkte zugeordnet werden, die sich links von kl befinden. Für
gilt das entsprechende.
6
Leider kann man diese Rekursion nicht lösen, ohne den genauen Zusammenhang zwischen
, o und p zu kennen. Darum muss hier eine Überlegung zum best-case und worst-case erfolgen:
n
q
best-case: Jede Division ist so balanciert wie nur irgend möglich:
nsr
r
o
pt
Hier wird – mit dem Hinweis auf die doch sehr grobe Analyse – gewissenhaft ignoriert,
dass nvu o r pvwyx und n und o ganze Zahlen sein sollten. Diese Tatsachen fallen bei
der Klassifizierung der Effizienz dieses Algorithmus’ kaum ins Gewicht. Somit ergibt
sich aus Gl. (1):
ze{
t
r
pR|
z~} p t
{
u {
pb|
p_@
pb|
Die genauen Rechenschritte zur Auflösung dieser Rekursion sind in [JRou, S. 101f]
beschrieben.
q
worst-case: Jede Division ist so unausgeglichen wie möglich; das entspricht dem Fall,
dass alle Punkte schon auf einer konvexen Hülle liegen und somit kein Punkt eliminiert
werden kann:
{ nUr
x
r
o
pw?xA|
{ nUr
pw?x
o
r
xC|
Die Werte für n und o in Gl. (1) eingesetzt ergibt dann:
ze{
zd{
u {
r zd{
u
pw%xA|
p |
b
pt w%xA|
p
{
{
u
u
uyCu
p
pw?xC|
p w
|
r
pR|
r
r
{
r
; p
{
{
pw.|
p t
u
9
r~ {
L*;
pw.D|
xA|
p |
Im schlechtesten Fall ist QuickHull also genauso schlecht wie das naive Verfahren. Es hat
{
sich aber in der Anwendung gezeigt, dass die Effizienz im Mittel bei ¡ p_@
pb| liegt und
(ähnlich wie QuickSort beim Sortieren) eines der schnellsten Verfahren auf dem Gebiet der
Berechnung der konvexen Hülle ist.
3.3 GrahamScan
Dieses Verfahren, das 1972 von R.L. Graham entwickelt wurde, gilt als eines der besten auf
diesem Gebiet. Es deshalb so gut, weil es die best-case-Effizienz von Quickhull sogar im
schlechtesten Fall halten kann, wie wir später noch sehen werden.
Der GrahamScan besteht aus zwei wichtigen Teilen, der Sortierung der Punkte und dem
Backtracking-Verfahren. Der zuerst genannte Teil (siehe Abb. 5) beginnt mit der Auswahl
7
ª«
¼½
®¯
¦§
¾¿
¨©
h ÂÃ
¤¥
°±
º d »º
»¶
f
¸¶¸¹
g ÀÁ
²³²
´ ´
³
¬­
e
ÄÅ
c
µ ·µ
·¶
b
ÆÇ
i
¢£
a
a
Abbildung 5: Sortieren der Punkte
Abbildung 6: Backtracking-Verfahren
eines geeigneten Pivotelementes aus einer Menge von Punkten È , vorzugsweise ist das derjenige Punkt mit der kleinsten É -Koordinate (und größten Ê -Koordinate). In der Abbildung ist
das der Punkt Ë . Das Kriterium, nach dem nun die restlichen Punkte sortiert werden, ist ihr
Winkel zu dem Pivotelement (und sein in die Horizontale und positiv verlaufenden Strahl).
Das Sortierverfahren kann zwar beliebig gewählt werden, es gilt aber zu beachten, dass selbst
die worst-case-Effizienz von ÌOÍPÎ_Ï@ÐÑÎbÒ nicht überschritten wird; daher hier die Empfehlung,
entweder Shell- oder MergeSort zu verwenden.
Die herausragende Leistung des GrahamScan’s liegt in dem zweiten Schritt, dem Backtracking-Verfahren (siehe Abb. 6). Das Prinzip dieses Verfahrens ist die Erweiterung einer
schon bestehenden konvexen Hülle um einen Punkt und die nachfolgende Überprüfung auf
Konvexität des neuen Polygons. In der Abbildung beginnt man also mit der (natürlich konvexen) Hülle ËÓÔ und fügt den Punkt Õ hinzu. Der Algorithmus geht nun einen Punkt zu Ô zurück
(back tracking) und stellt fest, dass die Hülle einen Knick nach links macht. Somit ist ËÓ ÔÕ eine
konvexe Hülle. Nun wird der Punkt Ö aufgenommen und der Algorithmus stellt fest, dass die
Hülle bei Õ einen Knick nach rechts macht. Õ kann folglich nicht zur Hülle gehören und wird
daher eliminiert. Eine neue Überprüfung bei Ô ergibt, dass Ô zur Hülle gehören muss (Knick
nach links), und es wird ein neuer Punkt zur bisherigen Hülle ËÓ ÔÖ hinzugefügt. Das Verfahren
wiederholt sich so lange, bis die sortierte Menge È abgearbeitet ist.
Die Überprüfung, ob die Hülle an einem Punkt É in einem Abschnitt Ê×É&Ø einen Knick nach
rechts oder links macht, kann unter anderem so gelöst werden, dass getestet wird, ob sich É in
dem Dreieck Ù5ÚÜÛÝÊ2Ø befindet, wobei ÚÜÛ das Pivotelement (Angelpunkt) ist.
Die Zusammenfassung des GrahamScan’s lässt sich durch folgenden Pseudocode beschreiben:
1
2
3
4
5
6
7
8
9
10
Algorithmus GrahamScan
Û ß Punkt Þáâ mit Þ2ã4ä_å.æ,ç9è&é'âiê
Þ à
ë
Þ2ã4ìeå.æ,í'î&é'âhê
Þ2ï ðããã ð
ÞñóòÜï ß Sortiere alle Punkte Þôõáâö¶éDÞ Û ê nach ÷ùø Þ Û Þôgð Þ Û øPúûUüü
for ý ßÿþ , ý , ý³úUú {
ß ý
while Hülle knickt bei Þ òÜï rechts ab {
lösche Þ òÜï
ß }
}
Bei der Bedingung, ob die Hülle einen Knick nach rechts macht (Zeile 6), wird davon
ausgegangen, dass zuvor bei dem Sortierverfahren (Zeile 3) gegen den Uhrzeigersinn sortiert
wurde. Das entspricht einer Sortierung von Ú ï Ú ñóòÜï nach aufsteigenden Winkel-Werten
zu ÚÜÛ .
8
Die Effizienzanalyse des GrahamScan’s beginnt mit dem Sortierverfahren. Es ist ja allgemein bekannt, dass eine Sortierung, die nur auf Schlüsselvergleichen beruht, mindestens
erfordert. Wir nehmen an, dass das verwendete Verfahren auch im worst !Schritte
"#
case braucht.
Dass das danach verwendete Backtracking-Verfahren nur Schritte benötigt, ist schon
etwas schwerer einzusehen. Aber nach jedem Test der Hülle
auf Rechts-Knicke schreiten wir
entweder
voran
oder
wir
eliminieren
einen
Punkt.
Da
es
nur
Punkte gibt, kann man höchstens
Vorwärtsschritte durchführen, aber auch höchstens Punkte
# eliminieren und daher höchstens
-mal zurückgehen. Somit benötigt der Durchlauf nur "%$ '&
Schritte.
!(
Insgesamt werden damit also Schritte im schlechtesten
Fall benötigt.
3.4 GrahamScan (improved)
Dieser Abschnitt sollte als Ergänzung zum vorherigen verstanden werden, da es den GrahamScan um eine nützliche Methode erweitert: Der Eliminierung von unnötigen Punkten. Diese
Idee wurde schon beim QuickHull-Verfahren (siehe Abschnitt 3.2) verwendet, wo zu Beginn
des Algorithmus’ sehr viele Punkte mit einem Schlag eliminiert wurden.
PQ
./
JK
,-
:;
RS
<=
45
HI
)*)+
NO
89
67
LM
01
z{
>?
@A
BC
FG
DE
XY
fg
^_
Abbildung 7: Bestimmung des Vierecks
rs
VW
de
|}
23
tu
U*T UT
xy
bc
`a
vw
Z[
hi
jk
lm
pq
no
\]
Abbildung 8: Anpassen des Rechtecks
Der Ansatz ist, ein sehr schnelles Berechnungsverfahren zu entwickeln, um eine unnötige
Sortierung und spätere Betrachtung von Punkten zu verhindern. Die Realisierung (siehe Abb.
7) erfolgt durch die Ermittlung eines rechteck-ähnlichen Polygons aus einer Menge von Punkten. In dieses Viereck wird nun ein Rechteck gesetzt (siehe Abb. 8). Der Gewinn aus diesem
zweiten Schritt besteht in der vereinfachten Eliminierung der Punkte.
Auf eine Darstellung eines Pseudocodes wird hier verzichtet. Statt dessen bleibt anzumer
ken, dass diese Vorberechnung Schritte erfordert und laut stochastischer Geometrie ~
Punkte im Mittel bei einer rein zufälligen Verteilung übrig bleiben. Die nachfolgende Berechnug des GrahamScan’s kann nun sehr viel schneller ablaufen, besonders bei der geschwindigkeitsbestimmenden Sortierung.
3.5 Divide&Conquer-Verfahren
Das letzte Verfahren, das hier für das Problem der konvexen Hülle in einer Ebene (2D) vorgestellt wird, wurde nach der Methode benannt, die es verwendet: Divide&Conquer. Zum ersten
Mal fand eine Anwendung dieses Algorithmus’ auf konvexe Hüllen 1977 nach den Vorschlägen von Preparata und Hong statt. Die Methode „Divide&Conquer“ wurde schon in dem Algorithmus von QuickHull (siehe Abschnitt 3.2) verwendet. Dort wurde von maximalen Dreiecken
9
ausgegangen, die sich zum Rand immer weiter verfeinern; hier wird dieses Prinzip umgekehrt:
Man teilt die Menge von Punkten so weit, bis nur noch Basishüllen (ein, zwei oder drei Punkte)
vorhanden sind, diese werden dann wieder zu einer großen Hülle verschmolzen.
Ein solcher Algorithmus kann folgendermaßen über die Punktmenge formuliert werden:
1
2
3
Algorithmus Divide&Conquer
Sortiere alle Punkte nach ihrer -Koordinate
Divide&Conquer
Mit der Funktion:
4
5
6
7
8
9
10
11
12
13
function Divide&Conquer
{
if ( * ) {
return
}
}
¡¢£%¤ ¥ ¦
§¨ Divide&Conquer !
© Divide&Conquer ¡ª
return merge «§¢¬­©®
Die Sortierung (Zeile 2), die übrigens zur einmal ausgeführt werden muss, garantiert, dass
bei der Trennung der Menge von Punkten (Zeile 8 und 9) ¯ und ° entsprechend einer vertikalen Linie getrennt werden, wobei wir annehmen, dass alle Punkte paarweise verschieden in
ihrer ± -Koordinate sind. Das vereinfacht den merge-Schritt (Zeile 13) erheblich, bei dem in
diesem Algorithmus die Hauptarbeit liegt.
4
5
3
6
4
2
B
3
7
5
A
2
1
8
1
6
0
9
10
0
Abbildung 9: Auffinden der untersten Tangente
Die meisten naiven Algorithmen, die zwei konvexe Hüllen zu einer verbinden, werden
wahrscheinlich mindestens ²´³ µ#¶· Schritte benötigen. Dass es auch schneller geht, haben Preparata und Hong gezeigt; ihr Vorschlag braucht nur ²´³µ#· Schritte. Zur Beschreibung dieser
Idee (siehe Abb. 9) legen wir fest, dass ¸ und ¹ Indizes der Punkte von den Hüllen º und
»
sein sollen, beginnend mit ¼ und sich die Nummerierung gegen den Uhrzeigersinn um die
Ecken (Punkte) der Hüllen fortsetzt. Somit kann ¸¾½À¿ oder ¸Á¿ als der nächste oder der vorherige Punkt von ¸ aus auf der Hülle interpretiert werden. Das Ziel dieses merge-Algorithmus’
10
ist es, zwei Tangenten für beide Hüllen zu finden; eine nähert sich von oben, die andere von
unten an beiden Hülle an. Im weiteren Verlauf werden wir nur den Algorithmus für das Auffinden der unteren Tangente beschreiben, das Verfahren für die Findung der oberen Tangente
(in der Abbildung gestrichelt) verläuft analog.
Die Idee von Preparata und Hong zur Berechnung der unteren Tangente à sieht nun vor,
dass von der Hülle Ä der Punkt mit der größten Å -Koordinate und von der Hülle Æ der Punkt
mit der kleinsten Å -Koordinate genommen wird, um diese zu einer (vorläufigen) Tangente zu
verbinden: Ã£Ç ÈÊÉ . In der Abbildung sind das die Punkte ÈÌË und ÉÍ . Nun wird jede Seite der
Hülle abwechselnd so lange nach unten abgeschritten, bis jeweils beim gegenüberliegenden
Punkt die Tangente unterhalb seiner beiden Nachbarpunkte liegt. Mathematisch kann man die
Bedingung für eine Wechsel der Angelpunkte so ausdrücken, wenn man à als eine Gerade
auffasst:
ÃÏÎÉÐÑÓÒÔÕÅ×Ö¾ØÉÙÐ!ÑÓÒÔÕÚ Û ÃÏÎÜÉÙÐÞÝ×ÒÔÕÚßÖàØáÉÐâÝ×ÒÔãÚ
Hier wurde È als Angelpunkt verwendet. Ã ist nun von È aus gesehen die untere Tangente von
Æ . Für É als Angelpunkt gilt natürlich das entsprechende.
In unserem Beispiel (Abb. 9) fangen wir, wie oben schon erwähnt, mit ÃäÇ ÈßËÙÉÍ an und
nehmen ÈÊË (blau markiert) als Angelpunkt für die Betrachtung der gegenüberliegenden Punkte
von der Hülle Æ . Nun verhält es sich aber so, dass nicht beide Nachbarpunkte von ÉÍ gleichzeitig über à liegen, darum wird É inkrementiert. Der gleiche Umstand ist auch bei Éæå bis Éç
gegeben, bis zum Punkt Éè , wo à nun die untere Tangente von Æ ist. Es wird nun gewechselt: Éè wird als neuer Angelpunkt genommen und È wird bis zur Erfüllung der Bedingung
dekrementiert. Das Ende und damit das Erreichen der unteren Tangente ist gegeben, wenn die
Bedingung für beide Indizes È und É gleichzeitig erfüllt ist.
Der folgende Pseudocode findet die untere Tangente:
1
2
3
4
5
6
7
8
9
Algorithmus Finde unter Tangente
éê£ë Ð mit ë Ðíìî ï ë Ððòñó¨ôõöÌ÷î'ø
ùê£ë Ð mit ë Ð#ìú ï ë Ðûðòñ­ó¨ôüþýÌ÷úÿø
while ( ó éù nicht untere Tangente zu î und
while ( nicht untere Tangente zu î )
ú
) {
é ê é
while ( nicht untere Tangente zu ú )
}
ùªê ù
In Zeile 6 und 8 wird beachtet, dass die Indizierung beider Hüllen gegen den Uhrzeigersinn
läuft, aber die Tangente trotzdem Richtung Boden gehen muss.
Wir gehen hier davon aus, dass alle Schleifen, die bei der Findung der unteren und oberen
Tangenten verwendet werden, terminieren4 . Dessen Effizienz liegt innerhalb von Î
Ö , da zum
einen immer nur der nächste Punkt betrachtet wird und somit kein Rückschritt stattfindet und
zum anderen, weil die Anzahl der Schleifendurchläufe nur durch die Anzahl der Punkte aus
Ä und Æ begrenzt ist. Somit ist der merge-Schritt linear, was uns insgesamt – wie bei dem
GrahamScan – auf Grund der notwendigen Vorsortierung auf eine Effizienz von ´Î#Ö
führt.
4
Den Beweis zur Terminierung kann man in [JRou, S.105f] nachlesen
11
4
Ein Ausflug in die 3D-Welt
Wie schon eingangs erwähnt, findet die Berechnung der konvexen Hülle vor allem Anwendung
in der 3D-Computergrafik. Hier soll dazu ein kleiner Überblick gewährt werden, nach welchen
Verfahren dieses Problem gelöst werden kann. Auf eine genauere Beschreibung (Pseudocode)
wird allerdings verzichtet, da eine Implementation sehr schwierig ist und ein ganze Bücher
füllen kann.
Abbildung 10: Punktmenge im 3D-Raum
Lange Zeit war die Berechnung der konvexen Hülle im 3D-Raum (siehe Abb. 10) dem
Gift Wrapping, der schon in Abschnitt 3.1 besprochen wurde, vorbehalten, da er sich problemlos auch auf höhere Dimensionen erweitern lässt. Die Darstellung entspricht der vorherigen:
Zunächst wird aus einer Menge von Punkten das Pivotelement mit !#"$&%
gesucht (siehe Abb. 11) und an ihm eine waagerechte Ebene angelagert. Diese Ebene wird nun
mit als Angelpunkt so lange in eine Richtung geschwenkt, bis sie auf einen neuen Punkt
trifft, wie in Abb. 12 gezeigt.
Abbildung 11: Ebene an Punkt mit ')(+*-,
Abbildung 12: Finde nächsten Punkt
Abbildung 13 zeigt den nächsten Schritt: Die Ebene wird an den beiden bisher ermittelten
Punkten geknickt und beide Hälften jeweils so lange nach oben gedreht, bis ein neuer Punkt
gefunden wurde. Man kann dies mit dem Zuklappen eines Buches vergleichen. Dieses Verfahren wird so lange fortgesetzt, bis die Punktmenge eingewickelt ist (siehe Abb. 14).
Das Problem ist die zurweilen sehr schlechte Effizienz von .0/
,132 . Es liegt also nahe, andere – bessere – Algorithmen zu verwenden. QuickHull lässt sich zwar auch auf höhere Dimensionen anwenden, hat aber auch im schlechtesten Fall wie das Gift Wrapping eine Effizienz von
12
Abbildung 13: Knicke Ebene an den bisher gefundenen Punkten
Abbildung 14: Eingewickeltes Paket
45687:9 . Der GrahamScan besitzt diese schlechte Eigenschaft nicht, er läßt sich aber auch nicht
auf höhere Dimensionen anwenden, da seine Vorsortierung auf die Berechnung von Polarkoordinaten beruht. Den einzigen Ausweg scheint das Divide&Conquer-Verfahren zu bieten: Es
45
6;=<>?6@9 und ist auch auf die dritte Dimension anwendbar.
hat eine Effizienz von
Abbildung 15: Zwei konvexe Hüllen (Würfel) Abbildung 16: nach der Anwendung des
Divide&Conquer-Verfahrens
Die grobe Beschreibung des Verfahrens entspricht genau dem der Methode in der zweiten
Dimension: Zunächst werden die Punkte aus der Punktmenge A nach ihrer B -Koordinate sortiert, dann wird A in zwei Mengen C und D aufgeteilt und es werden rekursiv die konvexen
5 9 und EGF 5 D 9 berechnet. Schliesslich werden diese Hüllen wieder zusammenHüllen EGF C
gesetzt (merge). Die Hauptarbeit liegt wieder bei dem merge-Schritt. Besonders in der dritten
Dimension ist dies schwierig zum implementieren, darum wird hier darauf verzichtet und auf
[JRou] verwiesen.
13
5
Fazit
Alle vorgestellten Algorithmen dienen nur einem Zweck: Zur Berechnung der konvexen Hülle.
Die Frage ist nur, welche von diesen vier grundlegenden Algorithmen nun der bessere ist?
Und vor allem: Kann es noch einen Algorithmus geben, der diese „magische“ Grenze von
HJI
KL=MNOK@P durchbricht?
Fangen wir mit der zweiten Frage, der Komplexitätsanalyse, an. Vielleicht wird der aufmerksame Leser schon bemerkt haben, dass man bei den Algorithmen um eine Sortierung
nicht herumkommt: Das Gift Wrapping ähnelt sehr dem SelectionSort, wo sukzessive jeweils
der beste Punkt aus dem Rest herausgesucht wird, und QuickHull, dessen Name nicht unbegründet dem von QuickSort sehr ähnelt. Im GrahamScan und Divide&Conquer-Verfahren wird
ja explizit eine Sortierung vorgeschlagen. Es erscheint darum nicht ungewöhnlich, dass man
das Problem der Sortierung auf das der konvexen Hülle transfertiert, zumal die Komplexität
der Sortierung ja hinreichend bekannt ist.
nun jede Zahl QZ durch QZJ[
Q@RTSVUWUWUVSXQY Zahlen, die sortiert werden sollen.
I QZ\SXSeien
I P0` Bilde
Punkt auf der Normalparabel _ Q
ab. Somit ergibt sich die PunktQ^Z] P als`ceinen
Q
]
bdI Q^ZeSfQ^] Phgjilknm0knKpo . Nun gilt es zu beachten, dass jede (Normal-)Parabel
menge a
Z
I P
auch gleichzeitig eine konvexe Hülle ist, alle Punkte befinden sich somit auf q8r a . Wird
nun derjenige Punkt mit der kleinsten Q -Koordinate bestimmt und werden dann von ihm aus
gegen den Uhrzeigersinn auf der Parabel alle Punkte aufgenommen, d.h. wird die konvexe
Hülle berechnet, kann die Folge QRTSVUWUWUVSXQY als sortiert betrachtet werden. Auf Grund dieses
HJI
KL=MNOK@P
Zusammenhangs braucht die Berechnung einer konvexen Hülle immer mindestens
s
Schritte.
Aus dieser Darstellung folgt, dass der GrahamScan und das Divide&Conquer-Verfahren
für das Problem optimale Effizenzen an den Tag legen, bei QuickHull ist es zumindest möglich. Aber welches ist nun der beste Algorithmus? Eindeutig lässt sich das (wie immer) nicht
sagen, es kommt eher auf eine mögliche Punkteverteilung an. Fangen wir mit dem Problem
der konvexen Hülle in 2D an: Wenn die Wahrscheinlichkeit groß ist, dass alle Punkte schon
auf einer konvexen Hülle liegen, eignet sich wohl am besten der GrahamScan ohne eine vorherige Eliminierung der Punkte. Auch das Divide&Conquer-Verfahren ist hier ein guter Kandidat. Für den anderen Fall, die Punkte sind hauptsächlich um einen Punkt gelagert, eignet
sich auch Quickhull sehr gut, da es sich empirisch gezeigt hat, dass dieses Verfahren im Mittel
schneller ist als der GrahamScan, bzw. das Divide&Conquer-Verfahren. Wahrscheinlich wiegt
dann allerdings eine Vorberechnung zur Eliminierung von Punkten bei dem GrahamScan und
dem Divide&Conquer-Verfahren (die Eliminierung wurde nicht nur für den GrahamScan entwickelt!) wieder einiges auf; näheres müsste mit dem jeweiligen Problem getestet werden.
Im dreidimensionalen Bereich gibt es eigentlich nur ein Standartverfahren, dass mit einer
akteptablen Geschwindigkeit läuft: Das Divide&Conquer-Verfahren. Zumindest würde dieser
Algorithmus von den hier dargestellten Algorithmen verwendet werden, es sei aber erwähnt,
dass es auch andere Verfahren für die Lösung des Problems in 3D gibt, welche sich zum Teil
auch etwas leichter implementieren lassen.
14
Literatur
[RSed]
Robert Sedgewick: Algorithmen
Addison-Wesley Verlag, 2002
[JRou]
Joseph O‘Rourke: Computational Geometry in C
Cambridge University Press, 1994
[MBrg] Mark de Berg: Computational Geometry
Springer Verlag, 1998
[IMue]
Algorithmische Geometrie,
WWU Münster, WS 2001/02
http://wwwmath.uni-muenster.de/u/chr/Geometrie/Folien/Kapitel03.pdf
15
tvu?wexzy{u?|~}|~}8
{l}}j\|~}w\yued~
fV¡ \¢d£X£f¥¤
~¦§£¨©Xª¥«= ¨¦§¬«­®z©¯­ V°¥£±²V­ «©X£³X´¬µX«= f¯­v«=£f¶3¯·J¥µ­vT ¨X«V¸
¹ «=º©VX£f«= $» ¼½«¥´T¾V´¿±²µ­v­ VX£f¥­v¥£X ¨¥zÀ©ÁÁÂ
À©Ã§Ä±dVŧ fV­ª#VÀ©Á©ÁÂ
Æ
Ç ÈÊÉÌËÍÌÎÏÉÑÐÒËÓ
Ô ÕTÖØ×WÙTÕ¥ÚÜÛÏÝÜÚ$Þ~ÔÕ¥Öß×WÙ¥ÕTÚÜàÝÜá ÙTÛãâ
äÜåØÛÌÖØÛÌÚåØÚÞÛÌæ@çèÚéêÕ¥æ-ëjì:í-åØîðïTÕ¥æGìTÖßÖØÛÌëñ$ÛXå²ÞÛXæpòÕTë&äÜÝó
í-ÛXæ-Ù¥æeì:ô¡îݡڡÞðåØÚÞÛXæ8õÕTñ©Õ:í-åØî&ÛÌåØÚÜÛpõÕTÖØÖßÛ¥ö¥çèëø÷¡ÕTÖØÙTÛÌÚ$ÞÛÌÚðù@娿ÑÞjÛÌæeÖìTá Ýí-ÛXæ
ífúTùGìTâ8ÔÕTÖØ×Vó
ÙTÕ¥ÚÜÛ¨û:ÔÕTÖØ×WÙTÕTÚ¡àWÝÜá Ù¥ÛÝÜá ñ$ÛXæ-ü$ì:ÝÜäíOâ-åßÚ$ÞýÝÜÚ$ÞýÛfâùÛXæeÞÛXÚýÛXåßÚÜåØÙTÛjâ-ä$ÛXàÌåØÛÌÖØÖßÛjÔÕ¥Öß×WÙTÕ¥ÚÜàÝ¡á ÙTÛ
ïTÕ¥æ-Ù¥ÛXâ
í-ÛXÖßÖßíXö
þpÛÌæãÿùÛXÛÌäó åØÚÜÛ ó ÖØÙTÕ¥æ-åßí-ü¡ëÝ¡ââ
í-ÛXÖßÖßípÛXåß
Ú ÛÌæ-é ì:üÜæeÛÌ
Ú ÝÜÚVí-ÛÌæãì:Ú¡ÞÜÛÌæeÛÌë @àXÝÜæã
ÿ Ñü¡ÚÜå í-í
ó
äÜÝÜÚ¡î¥íÑâ
ñ©ÛXâ
í-åØë&ëÝÜÚ¡Ù?ïTÕTÚjÿVíeæ-Û ÑîTÛÌÚ&ÞÜìTæXú:â-Õ?ÞÜìTâeâÛÌæ^ìTÝ Ñüjì:ÝéÔÕTÖØ×WÙTÕTÚ¡à ÝÜá Ù¥Ûì:Ú¡ÙTÛÌù8ÛÌÚÜó
ÞÛÌí8ù8ÛÌæÑÞÛÌÚî3ì:ÚÜÚ öÜÿWÕ½Ö ì á :í@â-å ÑüðàXÝÜ
ë 8ÛÌå â-äÜåßÛXÖñ$ÛXæ-Û ÑüÜÚÜÛÌÚ²úVù8ÛÌÖ ÑüÜÛãÔÕTÖØ×VÙ¥ÕTÚÜà ÝÜá ÙTÛâ-å Ñü
ÝÜá ñ©ÛÌæeÖØìTÙTÛXæ-Ú ö
^ÒËJÍ?ÓÎÏË
þpåßÛåØë ÷¡ÕTÖØÙTÛXÚ¡ÞÛÌÚ&ï¥ÕTæeÙTÛXâ
í-ÛXÖßÖßí-ÛXÚ½ÔÕ¥Öß×WÙ¥ÕTÚÜàÝÜá ÙTÛ8ñ$ÛfâíeÛÌüÜÛXÚðì:Ý¡â^ÿWí-æeÛÑîTÛXÚ öTþãì:ñ©ÛÌå$åØâ
í^ÛXâ
ù@åÑü¥íeåßÙ$ú¥àXù@åØâ ÑüÜÛXÚ ãÛÌæÑìTÞÜÛÌÚzݡڡÞÿVíeæ-Û ÑîTÛXÚðàÌÝ~ÝÜÚVí-ÛXæeâ ÑüÜÛÌå ÞÛXÚ ö #åßÚ¡!Û ãÛXæeì¥ÞÛ å â
í8ÛXåßÚÜÛ
" Ý¡ÚÜÛÌÚ¡ÞÜÖßå ÑüÖ ì:Ú¡ÙT#
Û åØÚÜåØÛ $Üö
^åØÚÜÛÿVíeæ-
Û ÑîTÛ üÜåØÚÜÙTÛXÙTÛÌÚå âíÛÌåØ%
Ú Ý¡âeâ ÑüÜÚÜåßí
íýì:Ý$ââ
Õ¥Ö ÑüÛÌåØÚÜÛÌ
æ ãÛXæeì¥ÞÛÌÚ²öpÿWåØÛ ù@娿ÑÞ
ïTÕ¥Ú{ÛXåßÚ¡ÛÌ&
ë Úé ìTÚÜÙ¥â
ó^ÝÜÚ¡Þ~ÛÌåØÚÜÛX
ë ^Ú¡ÞÜäÜÝÜÚÜîVí ñ©ÛÌÙ¥æ-ÛXÚÜà ífö¥ÿWÕTÖ ì:Ú¡ÙTÛGîTÛXåßÚÜÛõå ÑüVí-Ý¡ÚÜÙ?ÞÛÌæ
ÿVíeæ-Û ÑîTÛðéêÛfâíeÙTÛXÖßÛXÙ:í{ù8ÕTæÑÞÛXÚåØâ
íXúîÕ¥á ÚÜÚÜÛÌÚvñ$ÛXåØÞÜÛ~Ô#ÝÜÚÜîVí-Û Úé ìTÚÜÙ¥â
ó?ñÜàÌù?'ö #Ú¡ÞäÜÝÜÚ¡î¥í
â-ÛÌåØÚ ö
(
)
*,+.-0/213+54628 7
<>=@?
139
4:;*,+.-0/213+549
8
ACBED!FHGJI
G@KLFMLKLFONKLPQSRTKUFWVSY X RLBZF
[]\_^` ab\_ced
g f a_h
i@jckhjceh#lWchjcmckehnnohjqp g ceasrb\_ctuh^qjhtejasrvjqh^qhcxwvyonhz|{_hc}~ g ck
}>_L\_thjT
Jhhj^ik
hn2Lck
g ce{ y2hjcehnw yonhz|{bhxk
hn2lHc
mcabi@.ted#LTcke g ce{ y
hjcehnWm_ck
hnhcxw ynohz|{_h#i@hjqc g
bhcum_z|pjqyohn|my g nShn|k
hci@jh#m g z|pm^iWw ynohz|{_hcdvg f abh thdhjz|peceh0y
hnT[]\_^`va_\bced g ak
hnTm g i'k
hcwvyonhz|{_hc.}H}!_}!}Hbq_}vE0}H.tuhiJyhp yTSjnk5kemcc
m^iS[]\_^`va_\bced g a5}W}}H }vE}Htuhdhjz|pech0yuUhjioejh^ g f nHhjcehcx[]\_^`va_\bced g au ¡!¢¢£¥¤_¦¨§S©ª¨«¬ ©­v®¯_¬
°>±³²
´¶µZ·b¸
¹'ºH»S¸
µZ¼o½Jµ¾µZ¼@ºHµZ·À¿ÁL½ÂSÃTÁUºWÄÅWÃLµZ·
ÆbÇÈ
ÇÉÊ]ËbÌqÍvÎ_ËbÏeÐÑÎÓÒÔÕWÖ.×TÏÈ
ØÑeÏeÙ ÕoÇ Ú
È
ÛqÇÜ>Ü@ÛÏÈÎ_ÇÉ|Ô_ÈeÇÈ
ÛÇÝ@ÞßÉoÇÛqÇÏà5ÊTÑeÏeÙ ÕÇ_Ú ÛqÏÈ
Ç0á
ÏeÇÏÀÏ ÑÉÓÇÛÏeÇ2â ÕÉoÇã|Ù_ÇÔÏÙ_Ë_äsä3ÕåæäèçWÌÌqÎbÇäsÇÛÏeÇÏÜoÛÏÈÀÈeÔ_Ü3ÊTÑeÏeÙ ÕÇéWêÑeÏuÈÀéHëEÚ
ÔÌÜoË5È
ÇÉSÙvÌqÇÛqÏÜ@ÕoÇ#ÑÏÈÎ_ÉË_
ì íÕÇæÏuÈ
Ç0îEå
ïÛqÇ3â ÕÉoÇã|Ù_ÇÏéHðTÑeÏÈé>ñ#ÒeÇÛí_ÇÏâ
ÇÛqÕoÇÏ
ïÛqÇÓÊLÑeÏeÙ ÕoÇ#éHðTÒeÇÛí_ÇÏ×Uã|Ù_ÇÏ
Ë
È
ÇÉHâvÇÎbä5ÇÏ ÕoÇ
òeÐó#åu×Lã|ÙvØeÑeÏeÙ ÕÇ
ïÛqÇôLÔ_
ì ÏeÎ_Ç!ÇÛqÏeÇÜSÊ]Ë_ÌÍvÎ_Ë_ÏÐÑeÎbÇÜ
È
ÇÜSÊ]Ë_ÌÍ ÎbË_ÏeÐÑeÎ_ÇÜå
ÈeÇÜWÊ]ËbÌqÍvÎ_ËbÏeÐÑÎ_ÇÜå
ÛÜ@Õ#ÈeÇ0õÏeÛÇÉoÕ#ÔÌÜÈeÛqÇâvÑeäsäsÇÈ
ÇÉ!ôUÔ
ì ÏeÎbÇÏöÈ
ÇÉ!ÇÛÏ
á
ÐÇÌqÏÇÏxâ ÕoÉÇã|ÙbÇÏÚeÈ
ÛÇÓÈ
ÇÏÊ]ËbÌqÍvÎbË_ÏeÐÑeÎ3òeÛÌÈ
ÇÏå
ÆbÇÈ
Ç×Lã|ÙbÇ2ÒÔÕ5ÇÛqÏeÇÏø÷!ÏeÛã|ÙvóSÛqÏÙ_ÇÌ åLâvÇÛÏùÇÉÜ@ÕoÇÉsâeã|ÒeÇÏeÙbÇÌ>ÛÜJÕÇÛÏeÇÈ
ÇÉsòÇÛÈ
ÇÏúÛÏ
È
Çäû×Lã|ÙvØeÑeÏeÙ Õ>ÇÏÈeÇÏÈ
ÇÏâvÕoÉÇã|Ù_ÇÏÚvÈ
ÇÉSÔÏuÈ
ÇÉÇÈeÛqÇ
ìÑ òÇÉSÈ
ÛÇ!×Uã|Ù_ÇÒeÛqÏuÔÑÜoÎ_ÇÒeÇÏÈeÇ
e
ì ÏeÎbÇÉÑeÏeÎsÈ
ÇÉWÔ_ÏÈ
ÇÉÇÏxâ ÕÉoÇã|Ù_Ç_å
ü'ÇÉÌ Ô
°>±³°
ýþºU¸
µÿ
¸
µZ¼o½@ÅHºHÃ
¼oº
Á
µZºWµ%ÅHº»OÃTµZ·½JÁL·v· µZºHµ,¿ÁL½JÂSÃTÁLºWÄÅH
ÃTµ
ìÑ ÎbÇÌÔ_ÜÜ@ÇÏÜoÛã|ÒÛÏËÇÏeÇ!ÑeÏÈÎbÇÜã|ÒeÌqË ÜoÜoÇÏÇÊ]ËbÌqÍvÎ_ËbÏeÐ ìÑ Î_ÇHÇÛqÏ ÕÇÛÌqÇÏå
â ÕÉoÇã|Ù_ÇÏÐ e
UÇÛ
ÈeÇÏ3ÎbÇÜã|ÒeÌËbÜÜ@ÇÏeÇÏ2Ê]ËbÌqÍvÎbË_ÏeÐ
e
ìÑ Î_ÇÏ
ÜoÛÏÈÓçWÏeÞÔÏeÎ ÜJáÑeÏÈ.×TÏÈ
ØÑeÏeÙ Õ ÎbÌqÇÛã|ÒÚóË_òÇÛ
òuÇÌqÛÇòeÛÎ3ÛÜ@ÕÚ óUÇÌã|ÒeÇÉUÈ
ÇÉLòÇÛÈ
ÇÏÊTÑeÏÙbÕÇÔ_ÌÜUçWÏ
ÞÔ_ÏeÎbÜ@á ÑeÏuÈóUÇÌã|ÒÇÉUÔ_ÌÜU×TÏÈeØeÑeÏeÙ Õ
òuÇÐÇÛã|ÒeÏeÇÕWóSÛqÉ|ÈEå
ïÛqÇÜ@Ç#Ê]Ë_ÌÍvÎ_ËbÏeÐ
e
ìÑ ÎbÇÜã|ÒeÌÛqÇí_ÇÏÔÌÜoË.ÇÛqÏeÇ Ì Ô_
ì ã|ÒeÇ!ÇÛqÏå
ÇÏeÇÓÊ]Ë_ÌÍvÎ_Ë_ÏÐveìÑ ÎbÇ
ÒeÛÏeÎ_ÇÎ_ÇÏÒÔ_òuÇÏÙbÇÛÏeÇ!Î_ÌÇÛã|ÒeÇÏçWÏeÞÔÏeÎ ÜJáTÑeÏuÈ×LÏÈ
ØeÑÏeÙ ÕoÇ_å
!#"%$#'&(*)+$-,/.0$#13254$6178)91:$-;18$-<=>148?87818.(9$#18$@14$-)*$A&(*)+$-,/.0$
B$#)78C D8)+$#13E
>1@&14$-)FG;H4$-)I&(*)+$-,/.0$#18C78$J4$K&(+)*$L,/.$K$-;B$#)L2M$K";)/4N-7@48$#1@OP$#18$-1
QRS018C780$#1T0$#(CD8;-E
U5VXW
Y[Z\^]`_a8\]3Za]cb9degfh>di_kjm l h]
n 7op$-;1$#<q$-$#B$#1$#1rQR0;S018#7s.t181r<s1r$#18$-1N)+;$-1(*$#)**$#19QRS018#78 $-)u
Dv+$#13214$#<w<K14$-1x&(+)*$L,/.$-132(754$#1$#1y$-)5o$L^+$#D(-2$#18${z,/D0+7818|-E }N1
B$##$-,/D18$~R$#18$#1K4$-)R14?8718.(*$ n 1FG180*?87818.(H4$-RQR0;S018#7$--2-48$#)H148$#)+$
^H4811J4$-)R14?8718.(-EpF+78C )RR$-o$-L^$-4$-<QRS1#780$#17I#"%$#}[0C ,/Du
.$-v+$#1328*KDR^$L4$#)QR0;S018-78I0$#17-"i$-M
$#)/+,/D8;$L4$#1$'p)+;$-1(*$#)+7818$-13E
k<q4$-1NQRS(018-78K48181-7o$-18$#118$#132o<s1N48$#1 n 18FG18(?8718.(p$#)/*$-
781448$#1N>1o4?87818.(pk;$#*~+$-p13EB$)+$-*,/D8$-1Q>7818.(+$"i$-)+48$#19;1N48$#)z$-;D$#1u
FX${D8)+$#)pp)+;$-10+;$-)*718|18$-o$-13E
%$#H0$-+,/D8;(**$#1$#1rQR0;S018C7$#1I4;$KAD8>48$- n 18FG18(?8718.(*$-{B$#$#82348
178)4${zk$#D8$#1FX0;0$'4$#)Q>718.(*${$#18$'z${*?8$#;-2848|1o4$#)+$ n 1FG180*?87818.(+$178)
#S.+,/D8$sH$#)/+,/D8;$-878180$#1A;$#FX$#)+13E`p$#)I14?8718.(I$#)+J*,/D4818110,/DA$-*$~u
718s4$#)pp)+;$-1(*$#)+7818|781494$- n 1FG10*?87818.(*$L#E
%$#)+$#1(*$#)**$-1QRS(018 78C $-1'8$#o$-1J4$%%$L^/14+$#;$%$#,/D32L178)H4;$5{18,/.";1u
.$-M"i$-)+48$#148B$##79)+;$-1(*$#)**$#19{18,/.";18.0$#13E8p$#)k$-;18-;0$'k1(*$-)++,/D8$-4x#74$-1
18,/D(u)+;$-10+;$-)+$#1K{18,/.("18.0$#1s-2(48+4$z$-;D$#1FX0;0$4$#)5&,/D8$-18.$-8FX$-*0$#$#
^LE0p$#)%$#)/^+$p&,/D8$-18.$-8%48;$pH$#)+C 18$-)*781{48$#)%&*)+$-,/.$0204$k1y4$-*$#<,/.?8718.(
$#1o4$~L24$#)-"i$-v+$&,/D8$#1.$#M4;$I&*)+$-,/.$024;$'14$#<Q>781.0kB$#0;110LE
U5V
m0{m hj m Z:Zk]_ia8k]d>Z\^]
JQR0;S018C7$B$#)+$#;+5,/.0$#1TDo$-1328)/7,/D(i<s1y178)54;$'&$-v+$#194$-5QRS01u
#7$-k;1r'1(*$#1978<K-78o$-18$#118$#132P781o4<s1$#)+DC v$-;1$#1r)/?8D8$-13Eo<K;p+$-1
*,/D94811x14$#)+$ n 7FX(B$#1*$-;78180$#190C *$#13E
¡
ªk«¬
¢¤£J¥~¦y§I£|¨9©
­¯®M°{±²^³²´±k®`±wµi´±¶x´i·g¸¹>´±®±
º »¼½(¾0»¿8À Á¿þ0À-Á+Ä/Å8¼»0Á+ÁÀ-¿8ÀºR»¼½¾»0¿8ÆÈ Ç ¾0ÀÉ#Ã8Â;ÀÊ È Á*Á*À#ËÃÀ#¿|Ì»0Ë*¾0À-Á+Ä/Å8Ë*ÂÀ#ÍBÀ#¿À#¿'ÎË+À~ÏBÐ
R
Ñ8È ¿8Ò(Ó*À-¿9ÒÀ#¿8À{¾À-ÔKÀ#¿Á*ÊÔKÀ#¿9º È ¿8Ò(Ó+À'ÍoÀLÁÂ;Ó*Æ-À#¿3Õ
ÖpÂ;Àp×Ó*Ë+À-Ä/ÒÀ-¿sÁ*Ä/Å8¿À#ÂÃÀ#¿TÁ*ÂÄ/ÅTʼÁ*»'¿8ÂÄ/Å(Ó-É0Á*»¿oÃÀ#Ë+¿|Ó*Ë+À~ÏPÀ#¿TÁ*ÂÄ/Ås¿ È ËiÂ;¿TÃÀ-¿TØÄ/Ò Ñ8È ¿Ò0Ð
Ó*À-¿yÃÀLÁºR»¼½¾»0¿8Æ È ¾0À-Á-ÕÙÀ¿ÊÄ/ÅTÚÂvÓ+À#Ë/ÊÓ È ËÛ%À#Ë/ÃÀ#¿TÃÂÀpºR»0¼;½¾0»¿8ÀkÊ È Ä/ÅTʼÁ>ÜpÂ;À-¼;ÀLÄ/ÒÀÉ
¿ÐgØÄ/Ò0Àp»ÃÀ-ËkÝkÊ¿ÃÀ#¿8ÀLÁÜÂÀ#¼À-Ä/ÒÁ5ÍBÀ#Æ#À-ÂÄ/Å¿8À~ÓLÕÞ%À#Â Ñ Â;À-¼;Àß/È Ç ËpºR»¼½(¾0»¿8À0à
á{â-âLãä(åækçèêé#ë(çìPí
ªk«î
ïA®ð0³ñH±ò³®²*·^®¤ó±òqô²¹>®±ðõoökñR÷+³®`±µ´±¶9´·g¸¹>´±®±
ºR»¼½¾»0¿8À5ÅÊÍBÀ#¿yØiÄ/ÒÀ-¿ È ¿Ãy×À-ÂvÓ+À#¿ Õ(ÖÊIÁ*ÂÄ/ÅTÃ8À#Ë5ÝkÊ¿ÃyʼÁ>¾ÀLÁ*Ä/ż;»(Á*Á*À#¿8À-˺R»¼½¾»0¿Ð
Æ È 6
¾ ÍBÀ~Ó+Ë+Ê0Ä/Å0Ó+À#¿!¼Ê0Ç Á*ÁÓ-ÉÔ È Á+ÁKÃÂÀ9ø¿8Æ-ÊÅ8¼ÃÀ#ËsØiÄ/ÒÀ#¿ È ¿Ã×À#Â;Ó*À-¿!¾0¼;À-ÂÄ/ÅùÁÀ-Â;¿3ÕHÖpÀ#Ë
úʼ;¼ÉHÃ8ÊÁ|ÃÀ-Ë|û{¿8ÂÄ/ÒÛÂ;¿ÒÀ#¼%Æ#ÛÂÁ+Ä/Å8À#¿[Æ-ÛiÀ-Âk×À#Â;Ó*À-¿ü¾À-Ë+Ê0ÃÀNýLþÿyÍBÀ~Ó*ËtÊÇ ¾Ó-ÉÛÂ;Ë/Ã[ÂÔ
øk¼¼¾À#ÔKÀ-Â;¿8À-¿9Â;¾0¿8»Ë+Â;À-ËÓ È ¿Ã9ÃÂÀ{ÍoÀ-ÂÃ8À#¿r×À-ÂvÓ+À#¿9ÛiÀ-Ë+Ã8À#¿9ʼÁ5À#¿8À{ÍoÀ#Ó*Ë/ÊÄ/Å(Ó*À#Ó-Õ
ºR»¼½¾»0¿8ÀI¼Â;À-¾À-¿6¿8»0Ë*Ôsʼ;À-Ë*Û%À#ÂÁÀ|¿@À-Â;¿À#ËØ>ÍBÀ#¿ÀÉÁ*Â;ÀKÒM»Ç ¿¿8À#¿ÊÍBÀ#ËÊ È Ä/Å@ËLÊ Ç È ÔK¼;ÂÄ/Å
Á*À#¿3Õ
Ø>Ë+Û%À#Â;Ó*À#Ë*ÓMÔsÊ¿'ÃÂÀÖÀ¿8Â;Ó*»¿ÃÀ-˺R»¼½¾»0¿8À`À#Ó^Û%Ê0Á#É ¼ÊÁ+Á*À#¿'ÁÂÄ/Å'Ê È Ä/ÅÌÀ-Ë+Á+Ä/Å8¼ È ¿8¾0À#¿8À{ºR»¼½¾»¿À
Æ È ÃÀ-¿KºR»0¼;½¾0»¿8À-¿Æ ÊÇ Å8¼;À-¿3ÕÖÊÍBÀ#ÂÃ È Ç ËßXÀ-¿|Á*ÂÄ/ÅKÃÂÀk×(Ó*Ë+À-Ä/Ò0À#¿KÃÀ-ÁHºR»0¼;½¾»0¿8Æ È ¾À-Á`Ã8Ê¿¿
Ê È Ä/Å¿ʿÃÀ-Ë*À-¿º È ¿8Ò(Ó*À-¿9ʼÁÃ8À#¿N×Ä/Å8¿8Â;ÓÓ Ñ8È ¿8Ò(Ó+À#¿NÁ+Ä/Å8¿8À#ÂÃÀ-¿3Õ
Ù0ÀJ¿Ê0Ä/ÅÃÀ-Ô Ûi»ß+È Ç Ë{ÔsÊ¿AÃÂ;ÀTºR»0¼;½¾0»¿8ÀÍË+Ê È Ä/Å(Ó-ÉMÒÊ¿8¿@À-Á È ¿(Ó+À#ËkÔsÁÓLÊÇ ¿ÃÀ#¿Ê È Ä/Å
Á*Â;¿8¿Ì0»¼¼3ÁÀ-Â;¿3ÉBÃÂÀú`¼ÊÇ Ä/ÅÀÃÂ;ÀJÃÀ#ËÝÊ¿Ã9À-Â;¿Á+Ä/Å8¼Â;ÀÓkÆ È ÍBÀ~Ó+Ë+Ê0Ä/Å(Ó*À#¿É È ¿ÃÃÂÀ-Á*À#¿NʼÁ
Ã8Ê0ÁºR»¼½(¾0»¿TÆ È ÍoÀ-Æ#À#ÂÄ/Å8¿8À-¿3Õ
ªk«
³®±
µ´±q¶9´·^¸¹>´±k®`±
PÈ Á*ÊÔKÔ|À-¿8ÅÊÇ ¿8¾À-¿ÃÀ'ºR»¼½¾»¿À
g¿Æ È Á+ÊÔKÔKÀ#¿8ÅÊÇ ¿8¾À-¿ÃÀ-¿NºR»¼½(¾0»¿8À-¿¼ÊÁ+Á*À#¿ÁÂÄ/Å^À#Û%À#¼ÁÆ#Û%À#º È ¿8Ò(Ó+ÀIÃ È Ë/Ä/Å
À-Â;¿À#¿ºR»¼½¾»¿Æ È ¾JÌÀ#Ë+Í8¿ÃÀ-¿3É8ÃÀ#ËÆ È Ô ºR»0¼;½¾0»¿y¾0À#Å»0Ç ËÓLÕ
 Ä/Å(Ó*ÐÆ È Á*ÊÔKÔ|À-¿8Å ÊÇ ¿8¾À-¿ÃÀ'ºR»¼½¾»¿À
ÂÄ/Å(Ó*ÐÆ È Á*ÊÔKÔ|À-¿8Å ÊÇ ¿8¾À-¿ÃÀHºR»¼½¾»¿ÀÍBÀ-ÁÓ*À-Å8À#¿'Ê È ÁMÔKÀ#Å8Ë+À#Ë+À#¿{Æ È Á*ÊÔKÔ|À-¿8Å ÊÇ ¿8¾À-¿Ð
Ã8À#¿ºR»¼½¾»¿À#¿3ÉÃÂÀ{ÒÀ#¿8À'¾0À#ÔKÀ#¿Á+ÊÔKÀ#¿9×(Ó*Ë+À-Ä/Ò0À#¿xÅÊÍBÀ#¿3Õ
À-Û»Ç Å8¿¼;ÂÄ/Å8À-ÁºR»0¼;½¾0»¿
¿(Ó*À#ËsÀ-Â;¿À#Ô ¾0À#Û»0Ç Å8¿8¼ÂÄ/Å8À-¿!ºR»0¼;½¾»0¿[ÌÀ-Ë+ÁÓ*À-Å(Ó|ÔsÊ¿À-Â;¿ºR»¼½¾»¿É`ÍBÀ#ÂÃ8À#Ô
!#"%$&'$(*)+,-$.$0/-13245$768$!9$9:($;<$>=<)+?:A@B!$CD9?/-@BE#$!0$F21G/-HJI
HK$AM/DL 0.-$G&'$ONP@Q/-L 0$O$B>R'1A0&SAT9UH$A(:$(:$*$!02$@BA$=
V D/ A$WG$3.-BW'9U$X0E8Y$!A$O.$0/-1A$(:$OZUT9$([9:$B@!10A.\!3HK$A([]^/'I_WA24O=0$B']^/A21'I
:/DHKHK$A /-L A.-$0&'$a`bE-@Bc8.-E-0$*Ed4X!$*$B']^/A$O`bE-@BcT.E-A$=
)_BA$X/DG&'$(:$XZUT9$([9:$B@!1A0.a&A$(_`bE-@Bc8.-EA$e%9fR-!$gB,E-A,d/ih$+1AG&J,E-8h-$j'$+`bE-@Bc8.-EA$
$BA21'9$!@B$>= V !$ V $k0A!9BE-\] 1AL (5&'B$lW<$&'$#m5$.-(:n;o$U$(]pE-@B.D9_4XB$lB#&'$(+ql0/D@Bc'[_W<$
,-E8h-$rj'$sWA24O=0,-E-0,i/ih$St3$A.$>=
)_B`bE@!c8.-E%9_.$0/-1J&A/-AK,-E-8h$rj Rd45$0?"%$4+$!@b245$A$BA$(b`e1AA,T9$U&A1A(:$BA$
u $(/-&'$ah-$(W01A0&'$v45$(&'$S, E-L A0$>RA&'B$O,-EHKwA@!$9[9XBSBAHx@!B$.-9=
)_BS`bE@!c8.-E#%9X.$0/-1S&A/-AY,-EA,d/ih RA45$AS$UABT9X,-E8h-$rjs[9=
yUzpy
P!P^
{}|+~P|ll?|U_P|l|?
M%8MATl
U0M|llM
voF8PP<T
V !$0!$(lh-E(.$[9$@!@!9$Y`bE@!c8.E-A2 1AL .-$*1A0&&A!$F`bE@!c8.E-A$a45$(&'$YB&'$(?']pE-(:H\/d9:!,
h-E(?/-@!@B$HB&'$(O+EHw01'9$(.(:/Dk0,S/-A.-$45/-0&89f= V /DW<$b4+$(:&A$N@ /-L A$&'1A(`bE-I
@BcT.E-A$a/Dw0wA(Eij'BHK!$([9f=
3&'$(Ut/d90$H\/d9:!,v4+$(:&'$S/-Y689$@B@B$Oh-E-Y`bE-@Bc8.-EA$vH$B[9l&'B$0E-S$(:4 /DL AT9$
u (/DwAA$vh$(:4+$0&'$9=
qU1GSBY&'$( u $E-.(:/-wAAB$?45$(&'$S`bE-@Bc8.-E-0281AL .$i d`bE@!c8.E-A$gh-$(45$G&'$r9f=
P!P¡
¢£8¤^¥T¦d§
¨ ©P¦i8P8ª
V ! $#`bE@!c8.E-A$WG$f0( /-L A,-$««/-1']X245$ V BH$0!EA$>=¬l/D9FH\/D­$BA$® E-L (:wG$(
&'$(Xh-E-SHK$A(:$(:$Y`bE-@Bc8.-EA$sW<$.($A2r9X%9fR0E0$[9l&'B$$(X`bE-@Bc-$f&'$(f=
\&'$(_t/d90$H\/d9:!,J4+$(:&'$JHK!9+¬UB@!]p$Xh-E-K`bE-@Bc8.-EA$< u (:/-wAA$¯?w'9BHK!$(10A.:/D1']°I
./-WG$v.$@ EL [9=
±
²
³µ´U¶¸·s¹º´U´l»#¼G½¾¿Y´5¼<ÀÂÁÃFÄJ¶_¾ÅbÆ3ÇÉÈYÊ
ËgÌ[Í
Î3Ï[Ð?Ñ%ÒMÏ%Ó'Ô?ÐUÕ
Ö5ר5Ù'×ÚÜÛ8Ý5××ÞAßQàMØ!áA×ßQâlã!äå-æ:Ønç:èAÚFéGêaè0ëDá0ÙA×ã!çJ×êJê[Øìè«éAÚ¸×ØBá­í7׿î^ëDèAæ:×á­ïéAæJÖ5×fëDæß
ð × Ø!çéAáAäSä-×å-ÚK×rç:æØê:ìèA׿lñ*ëdç:×á>òoÝXØB×J×fêlïéAÚÖ5רê[Þ0Ø!×ãPØBáÙ'׿Oó+åÚKÞAé'ç׿[ß%ô*æëdõ0öYëDá'ß
ä-×Ý+×á0Ù'×çgÝXØBæÙø÷
ñ?Ø!×sô*æ:éAá0Ù'ØÙ'××sÙ0ë ð ר7Øê%çfòø×ØBáA×\ù ð ×áA×\Ù'éAæìèרBáA×sô*׿ë-Ù'×\ÙAë-æïé0ê%ç:×ãBã!×á>÷>Û8ØBá0Ù«Ù'Ø!×
ïé ð ×fëDæ ð רnç:×á0Ù'×áú ð'û ×öTç×#ÚK×èAæ:ÙAØ!ÚK×áGê[ØBå-á0ë-ãòPæ×fÙ'éAïØ!׿[çÚKë-áÙ'ØB×Sñ?ØBÚ×á0êØ!åá û ×rß
Ý5רBãBêXé0Úýüò0ê%çëdççaú ð'û ×öTç:×áÙ'׿lñlØBÚK×á0êØBå-áÙ ð ×rçæë-ìèTç:×rçUÚ\ëDá3ÙAë-áAáú ð'û ×öTç:×Ù'׿
ñ?Ø!ÚK×áGê[ØBå-á3Ù8ßü-÷
ËgÌþ
ÿ
7Ô
+Ó
bÐ
éAæUÙ'×á3Û'Ý+××Þ'ßà>ØBáA×rßâUãBä-忨!çè0ÚFé0ê ð ×á å-çØBäDçUÚ\ëDáYÙ'ØB×aîpå-ãBä-×áGÙ'×á sú ð'û ×öTç×
ùeØ!á0×ñ?ëDç×áGê%ç:æéAöTç:éAæ Jò0ÙAØ!×Ù'×áYÛ8ç:ëdç:é0êUÙ'×fêlÛ8Ý5××Þ0êXÙAëDæê[ç×ãBã!ç÷
"$#&%$#(' )
*
ùeØ!á0×ñ?ëDç×áGê%ç:æéAöTç:éAæ Fò0ÙAØ!×ë-ãBê «ëDæç×fêìèAãëDá0ä-×?î éAæUÙ'ØB×ù -×áTç:êgÙ'ØB×áTç÷
!
ùeØ!á0×Fô*׿ë-Ù'× vò0Ù'ØB×ëDé0ìè3Û8Ý5××ÞAßQàMØ!áA×aä×á0ë-áAáTçgÝXØBæÙø÷
$
+ áOÙ'׿Pñ?ëDç×áGê%ç:æéAöTç:éAæ êØ!áGÙOëDãBã!×_ù -×áTçêo×áTçè0ë-ãnç:×á>òÙ'Ø!×eØ!Ú í7׿:ãBë-é'îp×_Ù'׿MâUé0ê[î éAèAæ:éAáAä
Ù'×fê*âlã!äå-æ:Ønç:èAÚFéGê[×fê?ë-é'î°çæ:×rç:×á>÷øñ?Ø!×fê[×ö å-áAáA×áê:ìèAå-áïéÖ+×ä-ØBáAáë-ã!ãB× ð ×öië-áAáTçaêרBá>ò
å'Ù'׿XÝ5׿Ù'×á
èAØBáAïéAä-×î éAäDçfòAê[å ð ëDãÙvêØB×aë-é'î°çæ:×rç:×á>÷
ñ?Ø!×lù -×áçê7ê[ØBá0ÙKá0ëìè\Ù'×á lß aå8å-æÙ'ØBá0ëdç:×áKä-×å-æÙ'áA×çòdØBásÙ'Ø!×fê[×Ú GëDãBã0ØBásëDé'î^ê[çר!ä×á'ß
Ù'׿ XרBèA×áAîpå-ãBä-×-÷
,
/.
+
0
"$#&%$#&% 1
2
43 +*
+ $
5
6*
7 3
9:
8*
"$#&%$#7; !
6! BC - =<?> @> A.
ñ?Ø!×?Ø!á
× áTçè0ë-ãnç:×áA×*âUæç+Ù'׿ á'îpåæÚ\ëdç:Ø!åáA×á\è ëDáAä-ç -åásÙ'׿+ïé ð ×ë-æ ð ר!ç×á0Ù'×ávâUé'î°ß
äë ð ×Oë ð ò û ×Ù'å'ìèYä-Ø ð çX×ê
eéAáAöTç×òAÙ'ØB×O׿î éAã!ã!çlêרBáSÚ é0ê:ê×á
ü÷gñ?ØB×OØ!á
8!
ä-×fê[Þ<רìèA׿[ç:× áAîpå-æ:ÚKëDçØBå-áSØBê[çXæ×ãBëDçØ sïé0æ båêØnç:Ø!åáSÙ'׿lô*׿ë-Ù'× v÷
÷ £Ù0ëDæîPá8éAælë-áv×á0Ù'ãBØBìè 8Ø!×ã!×áYÛ8ç×ãBãB×á -׿ ë-á0Ù'׿çgÝ+׿:Ù'×á>÷
0÷gù+êeêØ!áGÙ\ä-×áTé0ä á'îpå-æ:Ú\ëdç:Ø!åáA×áK×áTç:è0ëDã!ç×á>òé0ÚºÙ0ë-ê5ú?æ:ØBä-ØBá0ëDãBÞAæ:å ð ãB×Ú
ð ×Ý+×äDç5êØìèsö-åáç:Ø!á8éAØB׿:ãBØBìè å-á
ñ?Ø!×Oô*׿ë-Ù'×
רBáA×Úxù ×áTçXëDé0ê
ë-á>òAÝXØBæ:Ù
-׿ ë-á0Ù'׿ç÷
D
ð ØBê
ïésã åê×á>÷
÷ aåÚKÚç5êØB×?ÙAë ð ר<ë-á
E FHG IKJLNMO6LPJQSRUVT W JLYXJ[Z\X:]^J_X` V Xa`JM,b:]KJ$J$OcedfLYXJgceZ\QPa+h W Ljik?l V Mnm
bokX?LjiUiqp+h+XrdfLYXLYJXMAJ$a:lsJ_X+itJX
{Nu6vx7wvvxz5ynvxtzB|7v{Ntvx|nvx|7zz|Nv~N}=vxzzwv?v8ttvxt|7vv~|z
x7vxv7zz5vz=$|7tzvx|7vxwz2{Nvxvwz4vv zANvvzAN
Avxvzv:vtvz
$¡7¢¡(£ ¤,¥_¦¨§©ª¬«¬­©t®S­¯°:©t± ²³¥¬ª_´
µ vxz
|¶v6·z{N
N~vx|7zt¸(
5
7v~u6v
tvxz
Nv6
t¸tz|YzANvBv{YNvz$
YNv
vxÄ |7{fzv|&z{P2· t¸¹w7
|&z$,¦
z={4º4Å»(¼$½y¾¿7vxÆ
4|z\v{ÁÇ4À»¹½7ÃnÀ wÈ z¾8 w|& v{Nvxtz$Szt||7Yv{Nvx2z·AN7wvwN|7|Nytf {4{N
É
|7·4z2
vN$|7tzÊvx?Ç4»N»¹zË?|zYN¾~7zwÌANznv¾¿S|&{P: yv|+z|v5·z
tvx4$|7z|7vxz{Nvxw4vzANvÁzqqt|v
$¡7¢¡&Í Î,ÏÐ¥¬ª_«¬Ñ(«¬ÒUÒÌ«_ÒU­4ÓÒAÏe¦/©°_ÏÐÒUª_­
µt|vzÔPvxt|&vtvvxz4
{Yt|&¸Svx:tv|A|7vw{Nvxvxwvx·ynvxwzv$||7z|7vxz{{Nvxynwvx4vzAANv|7{Yz4vx×~¸¹{N7?wvzvxtvtvxÕnzf{t
|v2yn2vxvx|&tzvxz4
z¶w5z Ö
vx{YN|7zvxvfvxz¶vx{NN|v5N|7ez
vzvx|7u6zvx
z
tvxvÁfw|zvzvx
|7Øzvx|72z$|7|&{PvxvÙtt|7vBzz
|NNtzvzØ-ÚwÛjvÜ~{Uz|tY|7Nzv
Ðz$Svx·zqw{v{Yvtzvxvx
|&{P
$¡7¢¡7¢ Ý
Ôjµ z|vt{Yv~|7v{NvxvxÙtvxzv|7{N
|7zvxz{Y
|7AzNØ|7¶ |7zØwvÚrz
z
7zA7v, $|7z|7vxz{Nvxw2vxzANv,vxzAN
vxz$t|7v5Þß{zv|7vxz$
¶UUv|7vvfw
2{Nz|zvxtzA=vY{zg
v:NÌvvxz|&zvxA?Þá àvxvx|7|7zvxvxztz¸¹wvz|7|YNvxzÚ?AÛ/fÜ~U:vt|v|7zf
UNvxvxwz2wvxvxzANvÁtztvxtv ÚsÄ zt|7=zUzf6vx|7
zzvz {
$¡7¢¡â ÓÒAÏ ©± ª_«¬ÒAÏÐ¥_ª¬´ÒUª\ãnäªåÝ
ÚC|7æPvz
Ä vx|7wz|7{:¸¹7wvztvN-
çvxz,¶vxe
ztvxNÖ
è Ü~28Þé
z5tvxê7|7zvz Ä ztzA¶z,,
z$U|75Á|7zBÚë
¸¹wvxz22vxz$
ì Ü~28Þê
zvxêvANvz Ä ztzA¶z=5
z$t|755
{ÚCvxzAY¸¹vNzA
í yn×_vx|&|Éntv=z ÞîÄ 7
vxt2¸vxzAtNvxv~zï|7z5tÚCz¶|YvxN
z{A¶ zð\zð×~|7\t|vKàv|vzt¸¹7wvÈtvx
zµ
ynvxvx||7z{Y|7
zzBtvxt|7z,z|ÚñNN{YNvzAvxNzv6 ¶z ì $|7z|7vxz{Nvxw4vzANvxz-zU
zz- w7|&$vxzz,t|v{Yv
$¡7¢¡& ò:ä­-´nÒU°²­¡(¡H¡
ÔjtzØvtU|7vvx{Nwvx4ßvzANvxv~|&{YvxzA|7Nvx:
N|vxz=q{N|z
eg¶tzqÚC
|&{P{Nw7vxvvxw
zw
4vz$z$t5
{{v|7|zØzv8óêUvynwvx2vxvx|zA{fv8t
|v ANÄ |7¶Bz{N|z$z ANv
Þôyv:vw?{N|&=zAz̶z57|7zt{z
=NvA{·&{v{YNv{|7=
{ Ä ¶vz6
{óC2|
õ
öt÷øùAú7÷xû7üýYþN÷ü5ÿøötû7üþN÷
÷ø÷ûþ÷þ
üü ëü "ú !÷xüö÷#ý U÷ !$2÷xüA&þ %'
( )ø *%ø ÷+ø !,÷ ÷üöt÷-ý U÷ !$2÷xüA#þ %'
. øø÷x/û þÁötû71
ýN? ÷ýüû7ü@6ü 9;Cû7ø÷öAûü ÷4< !n÷ 06÷x4<ø÷5!ø þøB47töt< ÷3÷ þ-ý 7C29 ûøü 'ö( 4ü øú&D=ý öt>÷xEüð4ùAüúþû7öF"ûü%8ùG ÷7ü H. 9Iü ö 54CüJùAþ5Eö÷4ý6üöFt÷,4!$2÷ûü÷ü÷ü@þý6!8÷$47:9÷ûûüøý+ö\$4ötû7÷÷ü
ÿë.øø÷x÷xüû7ü û/ûþN!+þ ÷ 5þ544< öt!üûþ ù÷N7t-þ ÷06ný÷x÷ù øýNûþ $>öHx÷1÷x$Jü 2&þ CK\ú7öt+ý û7÷4øüðö-÷xû7ö øü5÷BnüA÷x,÷ þNûn4÷÷x÷ü û7ý 6ü . . %ù÷5üAü4-þ ûüþYþ ùû5üþ=4Hüöt4L÷ùA ýO-þ !U,÷ ÷ !4$2üöt÷xüA÷Lüþý'7A+ý GM7P99û7øû7øö-öQö\û÷ýYû7÷üRø+û7; ü
!÷ú A< +ý Aþ 7A÷ýû7ýY
þ ú&+ý fü/û A#þ $2,÷ #ø ùþ"û %8
ü
9ûøö 4< n÷xø 5ø 4< þ 7 ( )ø S4üö ÷xû7ü÷x6
ü !,÷ $2÷ûüý B$2÷6ü üûþYþ 54üùAþ
? ü6
÷üLTK\ûøö÷xû7ü÷xø>!÷, 4üöt÷üL7T9û7øö÷xø2ûüÊÿr÷xû7ü!÷ 4< !þ7E9:÷üüåötû÷ÿøötû7üÐþ÷
!)ø < ýýN÷xøû7ýYþ 7Uú&ýötû7V
ü^ ÷øúú&7ýT9&2_4øBöt4÷nötöt÷xû7÷ü@ýN÷xø ÷ üùAûþYþ üþ45û÷xþN4+þú7ú5üX÷ 4ùAWEüþTùA%ýNþ ûüXþ"û ÷VøNü5÷4ûötüþ÷-ýöV
ø `Ø÷ 9þNøø÷xû]÷an÷5Zþûþ7eY$÷þþBû7ü 4÷ ý\[PýP÷þ?üöötûû7÷8÷ýNÿ ÷:n÷xû&öt÷xøü4ötû7ûbü øNþN÷-÷~WEùUú÷ýN]ûû"
þN5bû Bø 4< ü ÷xþ ü4K\ûXü ûø;Xö2 ö ( Bnø ÷x`#û÷ûFü 4ücö `üû+ý þNd+þ 954û÷ üùASþ C!J,÷ 4üöt4÷üLü >ö 7ötV÷9ø÷x÷xøû7üöt÷x&÷ cü !)øB<4eG÷xø÷+#ÿ üfûþYþ 54øüötùAû7þNü >÷ Ð4þ< -÷ ÷=øú7ý
ötUû7û7÷Iügö ùAþ+ú4ú7÷ ÷ú. ú7÷M%÷WEüAþýNý:ûþNûûbü,ü,hÿ ö÷xø!÷ 9ø ÷x÷÷5'ûþY÷þûü7A÷
û&ýPþ\Ðötþ÷x7&ø 9iûø"ú !Cö,öøûûþ÷ýY÷$Vø4ûSýü¹ÿë÷xøNþN÷xbû û7!ü7!4÷ü4< gö !þú7ú7÷ üûþN=þ
54üùþ÷8ýYû7üO
ö !,÷ 4üöt÷Lü j-k l mCnpo
qsrJnprJt:uvsrLw\xt#y{zS|St~}xt
L7 / "$
I%
IY ^ $ *H,4 b$c5 $
^
b . % & d
L7
@H
B< 4$
3H,4 ,!
H,4O 4 +H L7\H / +4 !6%C ;$ I%
AY
A Ii#4 9-
^ 4 < X[f$>5 ,$
J < b!7 % &46 #
< 4$ H,4' 4 +H L
÷ ôö n÷xÿ ü tþ÷xû ü ÷ úû÷ ü\4ü[÷øüüA÷öþNû7÷x=øú ÷xüü û ù AøHþ÷xþ øNû ÷A÷ú7úýþ÷ û ô÷x÷û7üAü þý n÷xýYù þN÷üü üþýNú7ûú$ü÷xö û7ü÷û&ýPþ6÷x÷øýù÷÷þNþN÷xxþNû7÷x÷ üA$þN÷û&ýPø þ÷ 4ú7ú7÷ý
ü þNøû ötû7÷ö ÷xøú7û&÷ ýP2þ÷x÷üAýþýYû÷û7üø üü úú7÷xø ü 2ûþû÷ø÷xøù÷þN2þN÷x÷ þN÷xü $û&÷ýPü þ÷xtü^þ û7÷xýYü þ6÷ûü ÷xø üö
j-kj x#TtE\V uLxt#y
L/L
I\U )¡¢: £
¤¥¦§
H,4 J7\ B4\ $> 1¨c U© ? X[ / +4 !F%
$
. ,$
;ª! ,
6© 1¨cs«+@4 4$ ªB4 H,44 J7: J < b! g$@
¨c 8¬ b!\ \=&© r÷ötý û7÷û7ü ÷ AþÁú7÷ û2üð÷xù üAþNü÷ýP÷xþ û7ü üAþN÷ú7ø ÷ýNn÷x÷xü ûþ ø þ üö ü î¹ü ÿ n÷ûþ û ÷ j÷xüü ûþNû nú7÷xû7ýNü û÷þNø ûü þ üü
¹ü eú (ü n÷ûþ
L/L/­
®g¢: £
¤¯¯°)±²
£
³ "! b ci + + ] @ J < b! X¨c UM© I4$
#
?
9
K &4 +H,4 L . -$34 <
' g; ! ,
-9
L7 D <
/
¨c U¬ b!U \+: 9
"! L
i#4
,$´9
Ni ! A;µ!
M9
J7U4 A 5 @4 s
! ! L ? d4 < P9 6¨c+ U¶ ¬ b!\ \=P© :! , B4\ ?
P! / H "!
^û7ü û÷x÷-øNþ ÷(ûü e÷xú üAý þNú7û¹ú7ü ÷ýN÷÷xü ÷ ø :ný ÷÷xøNûþùtýýYý þNýN÷xýNú7÷xú7úû ÷ü5û ÷x¹ü ÷ ü UnþN÷xøü ÷ þNùû ÷üBþ û7ü ¹Cü ÷nûü ÷xûþ ÷ øöü÷ötþ ÷ü :÷÷øö:÷x÷ü ûú&týö ùUú7ý÷xû7ú üýPýNþýY÷xþü^ýNû ÿ
÷ ýN÷ ýN÷x÷øüöt÷ :÷ø øöt÷û7ü[øö ü ü¹ü ¹ø?ù ÷xeü ú ü (ü n÷÷xýPûþþ ÷xú7ú÷þ ø ÷xøöt÷xüþ üû÷ö^ýY÷ùý+û&ýPþ üú7÷xûþYû þ x÷ûøNþ÷ û föt÷xý ø
·
¸¹,ºb»P¼¹½V¾»"¿CÀÁº]ÂÃÄVŽ+¹½Æ¼¹,ÁXÇĪ»ÇBÈ É¿C½=Â+¹,ÉʼÇBŹÁ=ÂÆ¼ÇÄ>º]ÂcË\¹ÉJÀBÈ Âº"¿ÂcÇBÅ\ÌÃʼ¹,ÁX¿¹Í
½ÇBÄM¹I¾#»b¿ÀÁº"Â+ÃÄXŽ#ÎcÏ=Ï É8ÐÑÒÓ)»bÀ¿UÏ É\Ò+Ò#ÔU¹,º"ÂÕ
Ö×
Ø
Ù_Ú,ÛÝÜ'ÞTßIà@áEÚâãSä'å#âæçåÚ,âÜZÚ,åè
éê"ëOì#íî+ïCðñïCî+ê]òíòðBò+êbóñLôõSîcî=óCö"öbë,ñÊ÷ê"ëZøùúñê"ò=òûíñüòëO÷ëýcþ3ÿLêbñê"ëñî+ë,ï>ëñCòëUë
î=ò+ê VòPë,ý÷ëñ êbî=òI÷íýùú3÷êb
ë Uë,ê/÷ë,
ñ ø ð íö"ëñ gð ~ý+ëùúCòë,
ñ ðBñ÷÷ðBýïëî=ò+ëö"ö"ò ÷ð \ëêLêbî=ò÷êbëMýëùúò+ëMøëê]òëV÷ëýðBüò+íë,öbö"
ë Uí\îsòðBñ÷'íñ\÷Z÷ê"ëIöbêbñüëV÷ë,
ý Uí\îsòðBñ÷Oë,êbñëñ
øùúýê"ò=ò óCý+úëý Cëò ò#ê/îsò {ñóùúOö"ëë,!ý " ê/î=ò-ñíñZðçö"êbñüCë,ñZõ ñ÷ûíñüò÷ëî#öbðíë,ñøëï>ë,ñòî&ðBñïCë,üó$%cëñ
éêbëî+ëî#&êbý÷
êbñ& ð í' ïëñó%>ë,ñ)(
î+ê"ëúëý+ëùúCòë,ý#ðñ÷*
+#í
ñ &êbý÷hðBí\ùúQ÷ðCî'ý+óò+ëNøë,$ï cëñò'êb
ñ ðí ' ïëñó %>ë,ñ,#÷ð ÷ê"ë-.0/óóý÷êbñðdòë
ïý1óC îî+ë,ýPêbî=ò&êbý÷6î=ò+ëúCò#ëîí Uë,ý÷ë2ö/ðBíë,ñZøë,ï$cëñò
33
46587:9;<7:=?>A@CBEDGFH7= I=?J;K<7:LNMBED;@O=P=PQR;S$=UTV$;%WUXCJYR%R;<[Z\VY=]_^\XC>AV`= JYR8>PBED7;[<@a7
5b7:@C<7:;cMd7eL%7:;_=P7G@Df 7`ghV$>P@O= @aV$;7:;]
i a@ 7MdjU7:7Q-k,@a;7D8Jl=`;dR;m<7:;mf 7BED_=P7;onp;8<QR;S_=<7!>G5XCJYR7;mMd7eL%7:;_=E>G7:f fP7@BED_=q
JYXC>PVj@f <r<@7>P7>JR>Uste7XvV_u >PBED_=!]
w 7=PI:=.j@f <x<7:fXa@;S7np;<QR;S_=G<7>\e$7:X587;oMd7eL%7:;_= >.7:f f 7:@CBED$=!qR;<<@a7!>A7!>.<JYL%@O=
@;stJYRyze7:;VL%L%7:;] i J<@a7s|{~}GVdVfE<@;Jl= 7|SdXa7@a;7:f#@>A=\JYXC>#<@a7<7!>UfPV=P7:;xMd7eL%7:;_= >
X@a7eY=7>R;$= 7:f\<@7>P7:Lr]
!
.:
EaA _Gac. c8!Y 8O YCP[ PE:cb:C:
d%:_PG Gh_AaP&a
.:UP!E$ . ¡$!¡ Y :&
d%:_E¡ K: PE__&Y%a#a!A!?p
:_P¢z: $!
£U:2 p :CE:$:8r
:%$E#aErP#:_P¢z: $!
¤¥
¦\§¨©CªH«U¬®­¯:¯°±d§¨8²³Y­­¯´¡µ¯:¨_«Eªp©¨¶¸·§°E²¯:¨K¹b¯³°P¹b¯:©a«P¯:«±²³º©a«#©ªA«\²¯:°#»\­¼½$°P©a«P¾¿
º§8ªUÀz¯:°P«P©¼Á
Â:Ã
Ä6ÅÆ,ÅÇ:ÈpÉxÊ)Ë-ÌGÍxÎÏÅÐmÄ6ÅÆ,ÅÇÈÑÉxÊ)ÊÒÍcÈÑÉcÅÓÍxÔcÕ×ÖrÆhØÈ?ÙhÇ:ÚÔ-ØGÛ
Ü
ØÊhÈ.ØGÕxÇ:ÔxÝ
Þ,ßÒà1ábÞhâ)ãYäã1å$ælçÒèAábépêaëÒÞhìîíEßhìvå$ïvå$èHå$ïvâ#êOâhå
ð)ñ êò&ëhóëhô:ã ð8õõö
÷6ø`ùú)ûùú)ü
ýÿþ
"!$#&%')(+*,')(-').0/21436547849 !:!;!<!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;!
"!$#=!$# %')(?>@36')8A"B"/CB"A"'&!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! D
"!EF%.G'H*,')(-').0/2143-3I8/21J';!;!:!;!<!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! K
"!E"!$# %')(?>@36')8A"B"/CB"A"'&!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! L
"! D %.G';MONQP.G'RJP)'R.$9TS+5'(654UG.0/2VW!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! L
XZY[\]^_`
a
DJ!$#&%')(+*,')(-').0/21436547849 !:!;!<!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! b
DJ!EF%.G'H*,')(-').0/2143-3I8/21J';!;!:!;!<!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! b
DJ! D %.G';MONQP.G'RJP)'R.$9TS+5'(654UG.0/2VW!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;! b
cdfeW4]^gh
ig]j;
lkh_`m=nporqQsg]=n+trq2uWs]^gv"_
gi`wx\
y
z{s]^vJw=`vJ+|vJw}vJg
y
~"!$#.$'H3I.$')1+A".$'H6(-8JV68J(+5'.G9
J(27=/-.GB}R47Ul,7}36/7=A".$RJ78432!:!;!;!:!;!
~"!Ed.$':8JRJV6.$B=RJ.$')(6 3+!;!<!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;!
~"! DFM.$R*'.$36J.$')U!;!:!;!;!:!;!<!;!:!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;!#_
~"! K %.G';MONQP.G'RJP)'R.$9TS+5'(654UG.0/2VW!;!;!:!;!:!;!:!;!<!;!;!:!;!:!;!:!;!;!:!;!#}#
ZeWrng
_
ý8ý
e
_vJv4_
ý8ý
ýX
#
C¡¢)£?2¤¥¡¦
§©¨«ªp¬=­J¨®)¯±°"®²³:´Jµ2²I®_²¶¸·¹º»h¼0½h¾s¿+¼À_Á`¾sÂÄøÂ4º¿+ÂJ½r»h¼Å Æ$¨ÇÈ=¨¨®)µ2²6®)¨®²IÉ6®µ
ÊË}Ë=Ì ¬=¯Í°"®)µ:Îp¯4ÆÐÏ©Ñ,ÆG®ÒG®)Ó®)Ò0°®)¯É-²IÉ-¬=¯4°Í°JÆG®Ô=È=µ-Ò$ÆG®Õ=®)¯°"®HÖpµ-×®ÆÐÉ:Ø)´ÙÑ®µ6®Æ$Ú2­²I×4Û=´J¨®)¯sÜ
Ñ,®)µ-®)Æ0Ú2­4²-²I´4Ú2­4®<´4¯4°ÝJµ2¬=ÚCÉ6Æ$È=¯4¬=ÒÞ,¬=²-Ú)¬}°"Æ$¯JÕ4ßáà¬}²+ª?®)Ó®)µ2¬^É+×4ÆGÒ0°"®CÉ-®°"®¯Öp×4²-Ú2­JÒ$´JâãØ´
°"®¯ä´¬=°Ï©ålµ-®)®_²@´4¯4°³;°ÏæÑáÛ=´J¨®)¯sß
ç`Æ$®)Ò°J®)µWÖ+µ6×`®)ÆGÉWÆ0²èÉW®_²QØ)´®µ6éÒ0Ûµ-®)¯sÜ,ê?Æ$®Ñ®µ6®Æ$Ú2­²6²6´4Ú2­J®Ó´J¯JéÉ-ÆGÈ}¯JÆG®µIÉ_Ü?ê®Ò$Ú2­4®
ÖpÒ$Õ=È}µ6ÆGÉ6­4¨¸®¯°J¬^Óë4µØ´JµìO®µIÓë4Õ=´J¯JÕ²èÉ-®)­J®¯´J¯4°ÍÆG¯Íê®Ò$Ú2­J®¯íJµ2¬éÉ6Æ0²-Ú2­J®)¯Íî<®×JÆG®)É6®¯
°"Æ$®;Ñ®µ6®Æ$Ú2­²6²6´4Ú2­J®:Öp¯ê,®)¯4°"´4¯JÕ¸ï4¯4°"®)Éß
à¬}²ªp®CÓ®)µ2¬^ÉÆ$²IÉ,²6ÈHÕ=®Õ=Ò$ÆG®_°"®)µ6ÉܰJ¬=²-²Ø´J¯4Û}Ú2­4²èÉ,°"®)µ,Ñ®µ6®Æ$Ú2­²I×4¬=´J¨ð´4¯4°ã°"Æ$®Ñ,®)µ-®CÏ
Æ0Ú2­4²6²6´4Ú2­J®<Æ$¨ Ê Ï©°"Æ$¨®)¯4²6ÆGÈ}¯4¬Ò$®)¯ªp¬´4¨T¬´²èÓëJ­4µ6Ò$Æ$Ú2­×`®²-Ú2­Jµ6Æ$®)×`®)¯ê,®)µ2°"®)¯sß
§©¨ Ì ßå®)Æ$Ò"ê?ÆGµ2°¸°"®)µÑ,®)µ-®)Æ0Ú2­4²6×4¬´4¨ñ´J¯4°°"Æ$®pÑ®µ6®Æ$Ú2­²6²6´4Ú2­J®ÆG¨ò¯"Ïæ°JÆG¨®)¯²IÆ$È=¯4¬=ÒG®¯
¯´Jµsé´Jµ-ØÔ=È=µ-Õ=®_²èÉ-®)Ò$ÒÐÉ_ܰJ¬?°JÆG®@ÇÉ-µ6´4é}É-´Jµ-®)¯HÛ­4¯JÒGÆ0Ú2­:Ø)´;°"®¯nÇÉ6µ-´JéÉ6´Jµ-®)¯:Æ$¨ Ê Ïæ°"Æ$¨®)¯4²6Æ$È=¯4¬=ÒG®¯
²6ÆG¯4°sßôó=®ê®ÆGÒ0²Q¬¨öõ@¯4°"®Í°"®_² Ê ß´J¯°÷°J®² Ì ßiå®)Æ$Ò0²ã²IÆ$¯4°i°"Æ$®õOøQØ)Æ$®)¯JØ®)¯iØ)´²6¬=¨Ï
¨®)¯JÕ}®²IÉ6®ÒGÒGÉß
ù+¬}Ú2­úÖp×4­4¬¯4°JÒG´J¯4Õû°"®µ¸à<¬^É-®)¯4²IÉ6µ-´JéÉ6´4µ6®¯fÓëJµQ°"Æ$®Ñ,®)µ-®)Æ0Ú2­4²6×4Û´4¨¸®ê?ÆGµ2°fÆ$¨ýü"ß
Öpײ6Ú2­J¯4ÆÐÉ6ÉØ´þÝ4µ-¬}ÚÉ-ÆGÈ}¯4¬ÒnÞ,¬=²-Ú)¬}°"Æ$¯JÕÿ®ÆG¯J® ¯J®´J®=Ü:®)øØÆG®¯É6®)µ-® à¬É6®)¯²èÉ-µ6´JéÉ-´JµØ)´Jµ
Ñ,®)µ-®)Æ0Ú2­4²-²I´4Ú2­4®+Ô=È}µ6Õ}®²IÉ6®ÒGÒGÉß
§©¨ ßýå®)Æ$Ò¸²6Æ$¯4°ñ®)Æ$¯JÆ$Õ=®ÿ°J®)µÍ
¨ }Õ=Ò$Æ$Ú2­J®¯ Öp¯ê,®)¯4°"´4¯JÕ}²6Õ=®×JÆG®)É6®fÓë4µÙ°"Æ$®úÑ,®)µ-®CÏ
Æ0Ú2­4²6²6´4Ú2­J®Ù¬´"ÓÕ}®)ØÛ=­JÒGÉß à+®¯ Öpײ6Ú2­JÒ$´Jâ÷°"®)µÖpµ-×®ÆÐÉ×JÆ$Ò$°J®CÉ®)Æ$¯ Öp¯J­¬¯JÕúëJ×®µ°"ÆG®
ä´4¬}°Ïæåµ-®)®²Ü^³;°Ï©Ñ,Û=´J¨®@´J¯°ªp¬=¯JÕ=®áåµ6®®² Ñ,®)µ-®)Æ0Ú2­4²6×4Û´4¨¸® Ü^Æ$¯°"®¨ð°"®µ6®¯ÇÉ-µ6´4é}Ï
É6´4µ6®¯<Æ$¯HÝJÈ}µ6¨ Ô=È}¯<Ö+×J×JÆ$Ò$°"´4¯JÕ=®¯;´J¯4°:®)Æ$¯J®µlå¬=×®ÒGÒ$®OØ)´²6¬=¨¸¨®¯JÕ=®)Ó¬=²-²èÉhÕ=®Õ=®¯ë4×®µ6Õ}®²IÉ6®)Ò$ÒGÉ
²6ÆG¯4°sß
Ç"Û¨nÉ6Ò$Æ$Ú2­4®pÖp×J×JÆ$Ò0°"´J¯JÕ}®)¯ã²6ÆG¯4°Q¬=´4²O°"®¨ÄÑ,´4Ú2­Ô=È}¯Qà+®pÑ,®)µ-
Õ ²6Æ$®)­J®ä´J®ÒGÒ$® ë4×®µIÏ
¯JÈ}¨¸¨®¯sÜJ¬´4²-²6®)µp°"Æ$®:Ø)´4²-¬¨¨®)¯"Ó¬}²6²6®)¯°"®)¯Ñ,ÆGÒ0°"®)µ?Æ$¨TÖ+¯J­4¬=¯JÕ4ß
C£ð£?¤£ £?¡ln¡
ù+¬}Ú2­"ÓÈ=Ò$Õ=®¯4°²IÈ}ÒGÒsØ´J¯4Û}Ú2­4²èÉpÔ}È=µ-Õ=®_²èÉ-®)Ò$ÒÐÉ?ê,®)µ2°"®)¯sÜ4ê?ÆG®n°J®)µ Ê Ïæ°"Æ$¨®)¯4²6Æ$È=¯4¬=ÒG®;Ñ,®)µ-®)Æ0Ú2­4²IÏ
×4¬=´J¨ é=È}¯4²èÉ-µ6´4ÆG®µIÉnê?Æ$µ2°hÜ×JØê;ßfê?ÆG®®)µQ¬´²6²6ÆG®­Éß §©¨ýÖp¯²6Ú2­JÒ$´Jâû°J¬µ2¬¯ê?Æ$µ2°é´Jµ-Ø
Ô=È}µ6Õ}®²IÉ6®ÒGÒGÉÜê?Æ$®:°JÆG® Ê Ïæ°"Æ$¨®)¯4²6Æ$È=¯4¬=ÒG®:Ñ,®)µ-®)Æ0Ú2­4²I´Ú2­J®<°4¬¨ÆÐÉ+¬=×JÒ0Û´"ÓÅÉ_ß
!"#%$&('*),+.-0/.1
à®)µ Ê Ï©°"Æ$¨®)¯4²6ÆGÈ}¯4¬Ò$®Ñ,®)µ-®)Æ0Ú2­4²I׬´J¨ Æ0²èÉã®ÆG¯²6È=µ6É6Æ$®)µ6É6®µ¸Ñ,Æ$¯4Ûµ-×4¬´4¨ß î<®Õ=®×®¯÷²6®)Æ
®)Æ$¯J®ÍÖ+¯JÈ=µ2°"¯´J¯JÕ32 Ô=È}¯i¯42´J¯JéÉ-®)¯ Æ$¯ °"®µWõ×`®)¯4®=ßòÖ+´4²°"ÆG®_²I®¯42´J¯4é}É-®)¯ôê?Æ$µ2°
ê?Æ$®ÓÈ}ÒGÕ=Éã°"®)µ Ê àÑ,®)µ-®)Æ0Ú2­4²6×4¬´4¨5Ñ6¸é=È}¯4²èÉ-µ6´4ÆG®µIÉ_ܰ"®µã¬´4²Øê®Æ87CÏ©°"ÆG¨®¯4²IÆ$È}¬=¯JÒ$®)¯
Ñ,®)µ-®)Æ0Ú2­4²6×4Û´J¨®9
¯ å ´J¯4
° :;=<?>A@CBA,×`®²IÉ6®­Éß
ÖpÒ0²s®µ-²IÉ6®_²rꮵ-°"®¯;°"ÆG0® 2@´J¯JéÉ6®¯¬=Ú2­:ÆG­4µ6®*¯ DÏ©³+ÈÈ}µ-°"Æ$¯4¬É6®)¯<²IÈ}µIÉ-ÆG®µIÉ_ßlàÆG®Ç"È=µ6É6Æ$®)µ-´J¯JÕ
®)µ6ÓÈ=Ò$ÕÉ_Ü4Æ$¯4°"®¨
Ø´J¯4Û}Ú2­4²èÉ<°"ÆG®¨ÆÐÉ6É6Ò$®)µ-E
® DÏæ³ÈÈ=µ2°"Æ$¯4¬^É-
® GFIHJ>AKLKG<Cp×®_²èÉ-ÆG¨¨HÉ<ê?ÆGµ2°´J¯°
¨ÆÐJ
É MpÆ$ÒÐÓ®ãÔ}È=¯ ìO®)µ-Õ=Ò$®)Æ0Ú2­J®¯û¬=ÒGÒ$N
® 2´J¯JéÉ-®=ÜO°"®)µ-®)O
¯ DÏ©³+ÈÈ=µ2°"Æ$¯4¬^É-®)¯ÙéÒ$®)Æ$¯J®µn²IÆ$¯4° ¯4¬}Ú2­
Ò$ÆG¯Jé"²H²6È=µ6É6Æ$®)µ6ÉHê,®)µ2°"®)¯ ´J¯4°f¬=ÒGÒ$N
® 2´J¯4é}É-®=ÜO°"®µ6®9
¯ DÏ©³+ÈÈ}µ-°"Æ$¯4¬É6®)¯ÙÕ=Pµ =â}®)µ;²IÆ$¯4°hܯ4¬}Ú2­
µ-®Ú2­É-²²IÈ}µIÉ-ÆG®µIÉꮵ-°"®¯sQ
ß F HJ>AKLKG< Æ0²èɰ"®S
µ Rû´Jµ-Ø)®)Ò$é¯JÈÉ-®)¯ôÔrÜÔ=È=¯ °"®)
¨ Tè®ê®ÆGÒ0²®)Æ$¯
Ò$ÆG¯Jé}®)µH´4¯4° ®)Æ$¯µ-®Ú2­É6®µHål®ÆGÒ$×4¬´4¨ ¬=×JØ)ê,®)Æ$ÕÉ_ßàÆGS
® 2´J¯JéÉ-®°"Æ$®ã¯4¬}Ú2­ûÒ$Æ$¯Jé"²n²6È=µ6É6Æ$®)µ6É
ê?´Jµ2°"®)¯Q×4ÆGÒ0°"®)¯°"®)¯QÒ$ÆG¯4é=®)¯ãå®)Æ$Ò$×4¬´JU
¨ GVXW >AY[Z\*]_^ W >`YaZ\ Ü"°"Æ$®pµ-®²IÉ6Ò$Æ$Ú2­J®N
¯ 2´J¯JéÉ-®°"®¯
Ê
bPcCdfe,ghcCikj%cl`m`n(oqp#rQsutqvfwx?yzG{0|~}vfwx?yzG{%cCl[
cCb%lAm
p#i(
cCmAl`i#acCi8p#i(
8
cbPcCdfe,ghcCi
j%cl`mAn(oap#rcCcbf
cioqpdfeS6l`cC
cCb
l`ck,?*,[bP
#lAi(oqghcCi[bgPlAcCbgp#i(
l`c8rlghghm`cbPck,
*,[bP
#lAi(oqghc0n#l`m
cg
ciEiadfe(ghcCiki#qgPcicgPdq`%*l`c?.abf
l`i(oXgPcikcbf
ciEhamoqi#[c
habhghl`cbhg*p#i(
9e(oamAn#l`cbhgCn#l`ip#b8i#dfe9cl`i#cJ,?*,[bP
#lAi(oqghcE(n#bhl`n#mAcClAn#gC.l`cChc6l`bf
#oai#il`r moXghgNoan#ac¡Icldfe#cCbg¢*lAc£mXghghcb
#cCNn#lhm`oai#¤=
#lArcil`ai(oamAcCicbPc
ldfe(noqp#r¥s¦jkp#rJ§GoaPhciOi,p(i"
#ci¨cbPcldfe3© «ª «¬ ­®
« eoqm`m`c,?*,[bP
#lAi(oqghcCi¯
cbi
° p#i([gPc
l`cl`i¯
cCb*±ncCi#cm`lAcCacCi.*lAccCb¤=
l`rci(hl`ai(oamAcEcbPcldfe(hn(oqp(r²sGj.rp(³
ip#i´CpcClAi#cCr¶µ?
l`rJcCi(hlA[i(oqm`cicbPcldfe(hn(oqp(r·s¦6¸cCbhclAghcCbg¹cCbP
cCi,lAi(
#cr¶oap(dfe
l`cº,=*abf
l`i(oXgPci
cb ° p#i#,ghc*ncCbhdfhldfe[gPlAag¸¹cCbP
#ci¸»Ip
l`cChcr¼»IcCdf6lAbf
½¾c
cCr¿ki#aghciÀ
ck¤?
l`rJcCi(hlA[i(oqm`cilAi(abhnoqp#rÁs¦j#nIcbcClAi#cCi9»Icl`acCb6
cb.oap§0
lAc
 p#bh´Ccm6
cnIcl`acCabf
i#cghcioap#rcCsuÃÄ=w?ÅAÆÇA´Ccl`qg¸cl`i3clAghcCbhcCbS¤=
l`rci(hl`ai(oamAcCb
lAiqbPn(oqp#rÈnIcl`acCabf
i#cg8sGÃÄ®w¾ÅÆÇA
.cCb¹nIcl`acCabf
i#cghc*l`i(qbPn(oap#rÉsGà Įw¾ÅÆÇ 0cCi,ghe(amg
lAcº,=*abf
l`i(oXgPciN
cb ° p#i#,gPca
cCbhcCiOÊ6cClAe(ci§u[mA[cJnIcbPclAgPkl`r²l`i(qbPn(oap#rÁ
cCbk,?*,[bP
#lAi(oqghcCi3sGj*§uc¾gPacm`cag8l`gC
« e`E
lAc˺,?.[bP
l`i(oqghciÌl`i(
Ìi#ldfe,g¯[bgPlAcCbg~.l`cËncClA[c[bP
i(cghcCiÌl`i(qbPn(ap#rc
suÃÄ=w?ÅAÆÇAÀcbf
ciÎÍ[aiÏki#aghciδCpÐki#aghciÎm`cl`i#cbEn#lOhdfe#m`l`c³am`ldfeÌnIcl`rÑm`cgh´ghcCi
ki#aghcin#´C8*moXgg
cClAi(abhnoqp#rcCsGjlAr·nIcl`ac[bP
#i#cgPci£oqp#rsGëÄ=w?ÅAÆÇAip#b
i#dfe3
cCb ° p#i#,gNac¡Icldfe#cbhglgC¨Òl`cbPnIcll`gN6l`dfe,gPlA¸
#oq³9lAi!
ci¢m`qgghcCbhi
cC
nIcl`ac[bP
#i#cgPci9oap#rcCsuÃÄ=w?ÅAÆCÇA*i#ldfe,g8i,p(bk
#lAcº,=*abf
l`i(oXgPcaÓ[i(
cbPi9
#cb ° p#i#,g
oqiOldfe£[cCh¡cCl`dfe#cCbgkl¾gÔarlAgkp(r§Go[hg8
cbEµ?¹l`i(abhn(oap#rU
ciOcbPcldfe¨© «ª «¬ ­
© ºIª ºÓ¬ ­=Xl`iJ
cCrÏ
l`ci ° p#i#,gPcoai#acCabf
i#cghlAi(
oqe#cCb0
cbÕ.oarJcµqcbPcldfe(hn(oqp#r
sG6
Ö×GØI×GØ ÙÚ,ÛÜ8ÝCÚÞß%àáaàßÚ
âãqä(åaæIçè,é[ê#ëIìOíîqë(ïðañ,íïqæ(ï(ç,òéIìóîXëaêô?í«õ
ö÷ø ëè¹ùúÓç ÷ ï¢â ÷ åqæû ÷ ë ÷ ä!üþý#å ÷ ü,ë ÷ÿ è#ï ÷ ç ÷ û#ïaæ4ú,óï ÷ ï
Xëè ø ëèùñÓça
ï ëæ #ïã!ï(ç ÷ ï#ì!ð XûIçêIï ÷ ìçaå ÷ îã,ï ÷ íïqæ(ï(ç,òéIìóîqë[ê
!#"%$&%('*)+,+-.!%0/-1 !-+3254.!76&&%$68
:9 ; <=6,%0=6&%$7%&>?@
AB &>7C%&D<3=)-@&+FEBGH!+!=6&&%$I J&K >&.!
C%&D<!-.%!#"&$&%3E0E:GMLNPORQTSU
VW %@%3X@&.687YD#Z?@<&([\!-=.Z?@<&]G^2
_`QbacedG
f<+g%,!.6&%$]G!,h1 %!-+3$@&3@&K >
i-jkQTlmlnO-Go!3f
Z%?@<&pG2pqrOtsRuvlndGf<%+g%,!-36&$]G^!%
h-1 !-+.&wgF@&&K >,i jkQ`lmlnO !(
y _`QTaced{z )+9|&)&K > +fW}t2 _`QTaced~
x
B
y qOtsRuvlndz )+9|&)&K > +fW}2 qOsRuelnd~
B
C%&D<3=&,EBGM!=i jkQ`lmlnO J&K>BG*)@!%
y _`QTaced !+F@
%$.!FE7E:GM)@!y qrOtsRuvlnd !+{K >
-!FE=E,!F)@!L NPORQTSU GH!-. %!#"&%$&&%
E=EW
B&%,E
,t75t&
HTTT¡ £¢% ¤¥¦§W v¨ vª©r«¤¬­®¯±°n§³²µ´ ­¶¶H¶®¶·¢%b £¥¸P¢%b¯* v¶¤b¹¶­T º§W v¨ vª©r«¤¤t®©r« ­®¤t» e¡¼«¨B½W v¨r¢% v¶
¾À¿-b v¢%
¨W§W v¨ vª©r«¤¤t®©r« µª¤ÁW
¤
«
¨­®¤Ãv®%Ķ¢% v¶Å½W vª©r« µÆB®¶´& ¤b©r«T¶M
T¶
¯Ç­¶»
» v¬- v¶ v¶^§W
¨
b©r«^¬ vĶ¢%
¶¾
È v» v¬- v¶M¤t
¡¹b»bb©r«^ vb¶H¥¦§W
¨
b©r«¤¬­®¯É°n§³²W®¶¢^ vb¶§W
¨
b©r«ËÊ ÌÍ ÌÎ ÏÌ·Ê ÐÍ ÐÎ ÏѾ
È
¤®©r«&º¤tb¶¢Â5½³T *¬- v¨ vT¤Ò
¨½Ó«¶&Â
­bT *Æ:®¶´& Å¢%b ÔT¶¢%
¯±­¶» v» v¬- v¶
¶Ë§W v¨ e¸
ª©r«HTb v» v¶¾¦b k¥¸P¢%b¯* v¶¤b¹¶­T º§W v¨ vª©r«¤¤t®©r« Õ¬ ¤Á v«&Õ­®¤Ãv½W vWÖe¸R¢%T¯*
¶¤tb¹¶­b v¶
§W v¨ vª©r«¤¤t®©r« v¶¾
ׯآ%b
¤ (Æ:®¶´& ³­¶Ã
vb»
¶ºÃv®£´Ù¶¶ v¶£´ ­¶¶Ú¶®¶Ú¡¹b»
¶¢% v¨¯Ô­Û v¶
Ü ¹¨»¿- v®»&
­¨¶¤t» v½³¶ÔT¨r½W¢Ò v¤t¨rª¢%©r«Õ v¶¢Í ­¨r­®&´¹¶Ã
v¶&¨T
¨t¢%b :Æ:®¶´ :Ãv®Ä¶¢% v¶Â¢%
¨
¶Ì&¸Rݹ&¹¨¢T¶­
¶
b¯7§W v¨ vª©r«*Ê ÌÍ ÌÎ ÏbT
»
¶¾ÞB¤
½³T¨r¢Ò¢­¯*T
¬
»¹¶¶ v¶
Â
¯*TÌ®¶¢ÌÎvT¯ßÖe¸R¢%T¯*
¶¤tb¹¶­b v¶
§W v¨ vª©r«¤¬­®¯à°náµ²¶­©r«o¢%
¯â
¨¤t
¶HÝÒ¶¹ v¶ y SeOPlnORQT_ãl Ã
®·¤t®©r« v¶Â-­¶o¢%
¯É¤tª©r«H¢% v¨
ÆÀn­¢; vbT
¾MäR¯±bb¶´
¶á5 vbb¬­®¯ Ü ¹¶ y SORlnORQ`_`l ½³T¨r¢¯*`ºÌ½W vT v¨Ú»
¤®©r«&Õ®¶¢­¶
å
¢ v¯ÉÝÒ¶¹ v¶Â Ü ¹¶o¢% v¯É­®¤¢%
¨æ®©r«ç%n­¢ Ü ¹¶MÌMTb¶´%¤½W vT
¨» v«&
Â-­bT ºÆB®¶´& ¢%b Õ¨ ©r«&¤¢­ Ü ¹¶^bb v»
¶­¶»
Ãv
T»
¾ È
¤®©r«&µ½³T¨r¢¤t¹b­¶» Â%¬b¤³¢ v¨µÆÀn­¢ Ü ¹¶^Ì^b¯
§Wb­tÕè. v¶¢% v
¾ È
¶­®¤¹M½³T¨r¢Ë¯kTÕÌÎb¯é¨ ©r«& v¶á5 vbT¬­®¯ê»
¤®©r«&®¶¢;T¯*¯* v¨
½W v¶¶¢% v¨µæ®©r«ç%n­¢ Ü ¹¶ÅÌÎ%¨
©r«&r¤B½W vT
¨» v«&(½W v¨r¢% v¶^­bT Æ:®¶´& Ò¢T Tb¶´%¤³¢­ Ü ¹¶
bT
» v¶.­¶» vÃ
vb»
¾.¦b o殩r« M¯*TkÌÎ:¢­® v¨Ô¤t¹b­¶» Â:¬ª¤Ô¢% v¨*ÆÀn­¢b¯ë§Wª­tÔèÀÎ
v¶¢% e¾¦­¶¶·½(
¨¢%
¶·¢%b £§WªÓt v¨Ãv½³ª¤©r«
¶oè®¶¢·èÀλ v稼%mÂ-®¯âÃ
®·»®©r´
¶Â¹¬
¤T Ò vb¶
¶ÆB®¶´&
¹%¢%
¨³Æ:®¶´& Ú­®¤³¢ v¯âæ%®©r«¬
¨
b©r«^¬
T¶«­T v¶
¾
ì
íî\ïðvñrîòótôðeõ¡òö÷ðvöHøWðvñr÷%ðvöoóùúbúû-øWðvúªürïðºý:òöþÿð òürï- ðvñðªürïHúbðvôðvöû
Ú ò
µöóürïúbòM÷îöîürï·ôð
óòürï&ÿøWðvñr÷%ðvö
ûùË÷Tðùùñr÷böîÿðvö·÷%ð
ñÒý:òöþ&ÿðû
÷%ð
ñð
ö
ùùñr÷böîÿðvöWðvñðªürï·úTð
ôð
öûîòürïWðvñðªürï·úTð
ôðvö BóÕø!bñr÷oðböð"vøWðTÿð
# R÷*ðvöó$Tùöîúbð%(ð
ñð&bürïóóòürïðûBöîürï.÷%ð&ëôúTð&bürïð
ö3ý:ñ$bö"&'3ø!bðo÷TðHð
ñótÿðWðvñð(
ªürïóóòürïð*öòñº÷bð
ó$Ô îú)Tÿ*· òö÷+
, îòóôðeõ.- ïñtÿ/Å íîv" òø!bñ÷+-- ðvñÚ÷bð1-0 ð&Tôðvñ2bö
D ôðótòürïÿûEªók÷TðMýÀõnî÷%ð1F ùö5
òö÷G
,
3 ð
÷ð4- ðbôðvùñ÷öðeÿðvö56bö7 ñ8 îò:9.;=<>@?BA/C£
bö·ðböð&( úªîÿÿð
ö÷%ð
ö=2µ úªóúbðeÿ8e" ÿð
óø!Tñr÷oø!bðH ð
ñð&`ÿróI- ð:÷%ð
ñJ% òürïðHHTÿ òö÷ ,
ôðóürïðvïð
öûôð' ñ8%- õmÿWù^ ÷ðvñK( ð
ñð&bürïLv" ø!ªóürïð
öM* òö÷1
, ð&Töð
ö\ý:òöþ&ÿ
û
" ø2p ýBòöþ&ÿð
îòóÚ÷%ð&N òürï- ðvñðªürïO- ðböïîúTÿðvÿ&· íîPbö{÷%ð
öGW ú7 ÿtÿð
ñöOF ùöO;=<>@?A&:C öbürï&ÿÚöòñk÷Tð
ùùñr÷böîÿðvöûpótùö÷%ðvñö#÷bð\ý:òöþ&ÿð^îö{ó$bürïôð
ó$' ð&bürïð
ñtÿ£ø³òñ÷ðvöû]þQ ööð
ö#÷Tðótð
öòöMîöôðv" ð&Tôÿ³ø(ð
ñ÷%ð
ö=
R
S=TUS=TWV
X Y[L\2]&Y^`_baca=_`Y
Z
dfehgijlknmoqprlsutvwxjxky/o
ssnr
y/ofx{z@w}|~6@}$~
6
}$l
/ rmM
k tvwfxjxkyno
s/fhrqp5wr xk wfxjxkyno~6}$~
6@
}
rm rm6Mdfeexr mxk w| kxkpwfxjxkynoekhxgx
Z@W@B B¡lk x¢xkqex x £ ihmx z¢)|¤)|E
t)kn¥(W@ ¦+xk wfemm§ksm
¨} mofx j©¥x{|i xhjªk (W@ ¦gxs xky/ofxjmxOr m gxq«xkngm
¬ xj x pr­K
®6 xesx¯z°¡iehgx xnp±¥ ²kqs5³r ³´ x xµxs&vwfxjxkyno
ssnr
ynofxkp
¶ mxjhrqpjxynomlsG·i/p±¸xg6¹°
·» eybz(W@ ¦
º
¼}
¬ o²kqex· xk wlehmm½ksm
¾}
ik¥³À¿ÁlÂ
Ã}
mofx &vwfxjxkyno
ssnr
ynofx`zIJŠ@B/Æ zjlybz¤·
|~
6@
}$f
Ç}
·§» eybz·l
nÈ}
xesx5·§»Éjlybz·l
j©¥x{|i xhjªk ·gxs xkynofxhjmxÊr m± gxq«xk/gm ¬ xj x
t)
¡iehgx xnp±¥ ·i jlybz@W@B B(G²ksu}Zr µ´ x x³xs
vwfxjxkyno
ss/r
ynofxk ± xnpwfxjxkyno~
@
}$)|+k ± xj
xkngxihj q xmx µË mjr mqrj xs ¶ mxjfhrp
xsb|1ek s5·inp
j©¥x{|i xhjqr m}| xj§kpwfemm³gxs xkynoxjm±kqsm§k
xnp xj¥ x xm}| gxq«xkngm ¬ xj x pr­6
KÌ ÍÏΠгÑÒÓZÔÖÕ=ÑÒרղÒb×ÙÑ$Ú ÛµÜ2Ò=ÝÜßÞÑ$àá
âäãå6æçèéêãëfìéíëîïãäðã&å$ã&éñ¹òfìóîôêªólãëõhö$é÷hö6ãéëãë+øfù=úqûüqý=úþ&ùEÿ íqë
ÿ
!èã&åLìéUñ¹òµîhôìLèãå Ië &îòïäèãå )ôë ö$ã Wë !êôïBö8é ïé éãå$öLêéBöZèãå Kéã .ãPèã&ì
÷ã/ì$îê*ö8ãë1ð6ã&å$ã&éñ¹òì$óîôêã&ì .ïí÷ë 6ã&å$÷qéóö
âIéã
¤þ ¤û úqû å`èãë ð6ãå8ãéUñ¹òì$óîhôêãëö¹ì å8éUñ¹òqö`èãê lãéUñ¹òãå ïUîö
íqë
ÿ
èîJèéã Iíqëì¤ö8å$ô qö8éíqë*ãéëã/ì)ð6éë å$ófîhôêã&ì`ólãéã&éëãåEôëì$íå$ö$éãå$ö$ã&ë
Øëíå¹èëôë÷ qíë )ôë qö8ãëÊîhóò hë÷qé÷ éUì¤ö íqëPèãå Øë &îhòï`èã&å }ôë ö$ã .ë Iôëè èãå
Kéã .ã*èã/ì!ð6îôêã&ì Wïíq÷Hë
âIéã úqþ/úqûüqý `üqý=úôëèµèîqì Øë &ãé÷ã&ë³èãå åLãéëã&ë³ðã&å$ã&éñ¹ò÷qã .ôëèãëã&ë
)ôë qö8ãßèîhôã&åö
)ð6ãé ¤ã/èãê Jëíhö$ã&ëMéê äîhô öç@ðã&å$ã&éñ¹òfìóîôê !éå¹è
ãéëã )ëö8ì8ñ¹òã&éèôë÷Ê÷ã(ö8å$í lã&ë µâIéã&ì$ã )ëö8ì8ñ¹òãéUèôë÷ólãëõhö$é÷hö qíëìö8îëö$ã lãéö
ìö$ãòö åZèéã Ië &îòïßèãåLéê ØîhòêHã&ë³èãå Øë .å¹îh÷qã îhë÷ã &ãé÷hö8ãë )ôë ö8ã ªâßîì
ôñ¹òãë éëèãå{ólãé÷ãíqå8èëã(ö8ãë ö$å8ô ö$ôåEèîôãå$ö .ïí÷ßë
Kéã .ã!èã/ìEð6îôêã&ì
Øë &îhòï
èãåKîhë &ô ã&é÷qãëèã&ë )ôë qö8ã ê ôïö$é ïé &éã&åöKêéBö!èã&å hë÷qãäèã/ì ôñ¹ò Wîqèã&ì
éê Iîhô öç@ð6ãå8ãéUñ¹òìófîhôê íqë .ïí÷ë Eâßîhå¹îhôìãå8÷éóö6ì$éUñ¹òMãéëã ßã&ì8îhê*ö8ã éãë
íqë
åIèéã*ð6ãå8ãéUñ¹òì8ìôñ¹òã
$
(')+*, .-0/1 2+*3
;<
=
!
=
C"
F
?
$
?
879
?
A
:
:
B H"6
V>
n
?
dn
ZY
cb
C"
XW
B[
I7
VW
$
,U
^%
7
#"
?@
@
!
E%
]\
?
2
G**-
)
&%
IJ
LKNM&O1PQSR)T1?%
"6
?
?
B[
45"6
(>
D
1"
edf
&C
%
`_
#
HghiN!
a
u
]%
3%a
]%
C"
lk5@
jg
m7
Do
aq
LKrM&O9P#QHRsT1t"6
1"
CpH
?
pr­6
¥
v
wJxSyzl{|zJ}<~#z0~#S
z
l2
^a^52?Aj
A`A]?2 ¡:¢£ ]a¤1&¥m#¡:#§¦©¨?2ª«,¢¬­3I®¯?¡¨°]¨?#¡:` ¬­#?.#a±§²,¢1®³
´]#«,¢?
«,ª0µi¶ =¤1`A]4 :¡¢£ :.s¤1&H¥i3¡3 ¦©¨2ª?«]¢¬­3t®¯¡·3¶i3( ¬­#? ]3^¸¹3¡
º¼»
¤1 ¬­#?.?«,± ¥m#¡:#§¦©¨?ª?«,¢¬¾½N¥¿D¶ ¡:¤;9¢¡t¢¬À¶m# 3¡HªE# ´]3]¡©¤1# ¥l²,¢¬­3¡2»
¶m# #¡ 3¸
Á
´.#.¬­¬I3t&|´] ª1 |­A¬­#2 ]3^µ]¤«]´.ª +&|IA9]¡©¤1« 3Dá:AÄe¢?£ 3¸
Å«]l¨3Æ] 3µ¤«]ÆI¤13¡#¡©4 :D¥i3¡3 ¦©¨2ª?«]¢¬V«,¢m¤#¡#¡©2 #BA.¡:¤?«, A£.]?2 ¡:¢ #¡ ¶ ¡:¤¸ÇA&I´]3:¦©¨ #¨ Â?«.¦©¨¤13¬q´]± #§¦©¨#sȦ©¨#¬H«`¶ ª3¡3É ©Â®¯?¡I¤13hº]A¥m#¡:C»
§¦©¨?ª?«]¢¬Ê½r¥¿jªE3:¦©¨¡ #ªE#0¸|Ëj.DÌ43¤#¬Í$, :#¤3m¥m«]¢¬­3η## ´, i# ÏE# ´]3¡i«]¢1®
¤1 Ð;¢¡:·##± £9, :#h¤13Ì4#¶m# ±
Ñ]¸;ªE# ´]#.¡:¤C :#¥m ?²,¡:ª?«,¢?¬I&½NÒÓÔÖÕ×&Ø ¿µi¤1#¡­«,¢?
¤13¡S·#¶m# 3A9]¡©¤1 ?« :B½N1»©Ñ&¿$£.]?2 ¡:¢ #¡ $¶ ¡©¤¸Ëj.¬¾Ñ.¸
ªE# ´]3]¡©¤1C :#¥m?²]¡2»
ª?«]¢¬Ù½Ò^ÓÔÖÕ×3Ø¿·#3´] Ŷ 3¤#¡ÅÚ]]Ì43¤13¬<$, :#Û# ÏE3´.#¡A«]¢1®i¤1 IÐÛ¢¡:·#3±£9] 3
¤1&0Ì43¶i3±§lº1¸+ª3´.#.¡:¤1?C 3¥m²,¡:ª?«,¢¬­&A½NÒÓÔÖÕ×&غ]¿Cµ9¤#¡«,¢?m¤13¡l¤¡ 2 :#
A9]¡©¤1»
?«, ½N1»Öº.¿j£.]?2 ¡:¢ #¡ e¶¡©¤µC :¦]¸¸jA#¬ÜÑ.¸|¥l«,¢?¬n¶m#¡©¤13­®]± ´]± ¦©¨H ?´]3:«,¬Â ½1»©Ñ&¿
¥l²,¢¬­$ªE# ´]#.¡:¤C &¸
lrÝ
¹2Þ^52?A9A?
A¨°]¨?#¡t¤¬­#2 ]?«]±¥m#¡:#§¦©¨?¢?¦©¨H±§²,¢®³ IÚ.]¬ßÄe¡:·3è#¡I´]3?«,¢?)«]ª^µj¶
¤1 )º¼»Ö¤1 ¬I3?.?«,± ¥m3¡3 ¦©¨?:¢?¦©¨]µi9¢¡¤«]Æ; ¬­#¨¡¥l²]¢¬­#a¢?¤2 :«, 2 ¬­É
º
A.¡:¤?«, 3¬­É (BA.¡:¤?«, 3´]&2¢¦©¨. ¶m#¡©¤1#¬Â¢?Æ?¸
lr
¹2áàânã^20ä(ã5äÊ
åD^Åæ2ç
ADèjéH·33·#33¡´.#ªE#B2§¦©¨B«,¢?¤13?#± ª3B$¡: #¡: #^µ9¶ D¬êº¼»Ö ¬­#?.?«,± #0¸
ëEìí.î2ï.ð^í.ñ#ìjòóEôLõö=÷ùøúûrü&ý9þ9ÿ ªE#5º]f¶m«]¡l3ͽB± ]´­¿
ô2ñ1ô2î õ1í.î4ô©ö÷XøLú
ûNü&ý1þ9ÿ ªE#|º,f¶l«,¡l3ͽNB±.´IE¿
í.ñ¼í]î2ï.ð |ï.ð^í1ö=÷Nûrü&ý þ ª35º, ¶l«,¡&!" NûNü&ý$#%& '
(
)+*%,.-0/214356/872/69:56,;3=<>76/6?A@B,DCEFG,H*JIAKL1M56,;30E"FG,H*
N KO=1M14356*%/2PQ@B,H/SR*%/25T9VU%,H*%WX
Y[Z]\_^ `acb;deaf$Z]`HY`gf$Z]h ij hilknm aof Zp`HY[`!aq`!Zsr^\q\tjr^`"j hfAf$`hAY[`!aq`!Zsr^\_udejv2wefdexQ\tZsr^
dey]y]`lz|{~}l|af$Z]hdq`!hMj hf2dypy]`{~}
aqf Zphde_`hMj h_`!a\qr^ `!Zsf$`!h
Z]`\_`aqdj\q\t`!_!jh i
Zs\HZ]h2f$`aHoadz$Z]\;\_`!^ a;j ha_`gdey]Z]\t_Zs\_r^
`\_^dypu2bHZpaf&\_Zsr^&knypi`!hf$`vaqZsrMu`gf$Zp`hw
j v0f d\;oaquyp`v!jy]\_`!h
h i`!h v8vA`h8Zpv!jM\_jr^ `!hf$`!hMY[`!aq`!Zsr^y]Z]`!i`hMf$Zp`loj h _`
j hfMBHv8Zpf$`h
}
aqf Zphde_`h
" ¡ j hf4 ¢n£|e ¡ wf ^Bf Zp`o"j h _`o^deu¤`!h4f$Z]`oiy]`!Zsr^ `!h{¥}
|af$Z]hdq`!h
j\[f$`v"j h [ dehhvMdehMh|j h&f$`hoj h; e¦§G w e w ¡ vMdr^ `hwZphf `!v
vMdeh2`!a\¨f$Z]`4{¥}
|af$Z]hdq`
deh
f$Z]`oz|{¥}
|af$Z]hdq`j hfDf dh hVf$Z]`oz|{~}l|aqf$Z]hde_`odehf$Zp`{¥}
|af$Zphd_`^©h iegBd\
ª y]`!Zsr^ `Qy]©xe¨\tZsr^2vAZpl
vMdr^ `hw\_|fdex\tZsr^«c ¦B¬n£ w | w £|¡ `!aqiZ]u$g8df j aqr^«Zs\4i`b[©^ aqyp`Z]\t_`!wf dx
\_Z]r^f$Z]`4u`Z]f$`hoj h _`4Z]hZp^a_`h
}l|aqf$Z]hde_`!h6j h_`aq\qr^ `!Zsf$`hw$_aqeqf$`v­deu¤`!a
\tkna_Hf `!aq`!h2`r^_`h}
|af$Z]hdq`!h
!j2`!aq`h h `h2\_Zphfwf d8f$Z]`
aqvAvMd\q`!y]yp`Qf$`!a;z|{w$u !b4of `!aH{¥}
|af$Z]hdq`
`h\t®a_Zsr^
¯
° 3cPVWo@B*!1D/6PVU²±GPDRW[PD52*%/29
³ adr%_Z]hdy´[d\_rdf$Z]h iDZs\t[`Zph `µ`a_u¤`\q\_`!a__`
dq`!h\t_aqj _ja[j a;Y`a_`Z]r^\_\_jr^ `c
Zp`
¶f$``f$`\6³ adr%_Z]hdy´[d\qr!df$Zphi«Zs\t&`\w¨f$Z]`
dj `!a2f$`!a2·|jr^ `¸Z]v¹u`Zpi`!aqf$h`%_`h
Y;dej vºµh» y]i¸h²¼ ¡ dej$k» t½ ¼¾ ¡ !j¿a_`gf$j !Z]`!aq`!h¸lZ]`\_`\A\typyv8ZÀ8Á¨Z]yÀkn`
µh6\_a__Z]`!a__`h aqadÂ|\[deys\;u¤`!Z]i`!aqf h `%q`!a¨·_aqj _jaHj hfÄä`!Z]i`a_h6a_`gdey]Z]\_Zp`at;b[`!af$`!h
df$j ar^2bHZpaf6f Zp` hb[a__`!Zp[µh¸»ÆÅÇÉÈgÊ %Ë&Ì¿ÍÎ dj$k"» y]i8h¼ ¡ µ`!aqu`g\_\_`!a_
Ï;ÐtÑ
ÒSÓtÔ¸ÕÓtÔÖ×8Ø
ÓÔ«Ù[×|ÚÛ¨Ü[× Û¨ÚÝ4ÔÓ_ÞSß¨Ú àá¤×$Ótâ"ã¨àäåæàÕ|áàØlÓ_ã¨ç¿àÛ
Õ è
Y[`!Z]vé³aqdrqZphdyQ´[d\_rdf$Z]h iJb[`!af$`!hf$Z]`¸z|{~}l|aqf$Z]hde_`!h²f$`a&oj hq`æbHZ]`¸u¤`!aq`!Zpq\
i`^deu w[Zph²`!Z]h `vê\_a__Z]`!a__`!h²Y[Zph©eaqudej vëi`\_®¤`!Zsr^ `!a_
Zp`{~}
aqf Zphde_`hìb`at{
f$`h6^ Z]h i`!i`h2\tqdetHZ]h2`Zph`!vu¤`!Z]i`af$h `%q`!hY;dej vZ]h\tatqZp`atq`!h aqaqdÂ$\bHZp`kny]ie
i`g\t®¤`!Zsr^ `atg
l`a&í«j aq!`!y]|h eq`!h²µvëY[Zph©eaqudej vë!`!Z]ie2dej$k4f$`!hî`aq\t_`hï\_a__Z]`!a__`h aqaqdÂw
b[`!ysr^ `!aVdypy]`µaqv8v8`!hf$`!hð{¥}
|af$Z]hdq`!h«`!h_^©yÀg
`!aA!b[`!Zp_`wy]Zph`6}Qhe_`h
Z]vñY[Zph©eaqudej vñv8ZÀf `!h«z|{¥}
|af$Zphd_`h`!Z]ieVdej kHf `!hð!b[`!Zp_`hð\_a__Z]`!a__`h aqaqdÂw
f$`aQdypy]`AZpvñypZ]h `hðäb[`!Z]i2h $r^µa_v8v8`!hf `!h¸{~}l|af$Z]hdq`!h\_a__Z]`!a_du i`g\t®¤`%{
Zsr^ `!a_6^deóòou¤`!h\_¿`!Z]ieÄf$`!a2!b[`!Zp_`wlaq`r^_`æ}Qh eq`!hZ]vôY[Zph©a_udej v¹v8ZÀÄf$`h
z|{¥}
|af$Z]hdq`!hMdej$kf `!h&b`ZÀq`!h&\_a__Z]`!a__`h aqaqdÂwf$`a[dypy]`lZ]vÆaq`r^_`h6äb`ZpiVh $r^
µa_v8v8`!hf `!hÄ{¥}
|af$Z]hdq`!hÄ\tatqZp`atQdeu i`\_®`Z]r^`!a_l^d{;j hf\_&b[`!Zp_`aQh
õ `f `!vf$aqm u¤`!aqypZ]`!i`!hf$`h aqaqdÂAi`^ `!hä`!Z]i`a"!j6f$`!h õ `!b[`!Z]y]\[f$aqj h_`!a[y]Zp`i`!hf$`!h at{
adÂ|\w$f$Z]`bHZ]`Qkny]ieHi`\_`%_!¨\tZ]hf
ö`gf$`!a h$kÉdh iµv aqadÂ^d
!b[`!Zcä`Zpi`!ag
`!a¨`aq\t_` a_adÂ^del`!Z]h `h¸Ã`!Z]i`!a
!jv÷ypZ]h `h¿j hf¿òoZ]h `h¿!jvøa_`gr^_`!h aqaqdÂð
`!a8b`ZÀq`6y]Zph` a_adÂð^d8`!Z]h `h
ù
ú¤ûüpýû!þlÿ$þqü_û
püû
¨þqþoü û
æÿ
$þqü_û¸þqû_û¨þqþ
þ%
$ û!ü _û!&
!"#
'!"_" û!þ$
û
ÿ!û!ü]ý(*)û $ ûü+",$ü]ûoü-$þ./¤û!þpü]û!ýû
! û
0¨þqþlýû"1¤û!ü+ û!þ_û23546#7#þ$ü!8qû
(9:)û&$ûDûü û¨þqþ$þ! qû!þpü]û!ýû
! û0 3;46##þ ü!(_û 7 üpû=<>$ûþ¨ü?$þ./¤û!þpü]û!ýû
*3
$û@l
þ_þ8
ýû&"1¤û!ü+ û!þ_û3;4A#7#þ$ü!(_ûlü+"%
B6 * þ,CEDF üpû=l
þ_þ*"6"
# þ_ ü]û!þG!!HAüAú¤ûüpýû!þGIû!þ"_û
û"_ü!,J"1!eþGKE
"_ü üpûKL7! ûüH$
û!þG¤
/ û!ü]ýû
# þ ûMq û
Lq þ! þ&%G
B üpû&t" ûKLq þ þ6û
NOEE!
ýû&" ü_ û
_ û[
P û!þqû!ü+!"/!(@%
QSRUT
VXWY[Z]\A^A_a`Wbc^AWY,d*`fehgji
k6l7mn o(pn(mmqsrtl!o8rtqhu8pwv
' ýû
# OAûyxCz{!yx,|}"tü!ÿ $ û!ü '#þ*7ýû
NI #Ey~6/*)û
_û,%Jû û"C~6/*)û !([
ûü ûG'O8
û!þE"L*.!"t" ûU%2
B üpûN'#þ! ýû"tü!&üF$û
F"#þqüpûþqû
lþ_þ*"
z! ¨
| ýû"
1 ûü ûþ&%JA"#Ep û=(p ûG~6/) û
_û¨üxCzS!xf|6( ýû!ÿû!ü]ý( $ û!þ$û
,
$ ûþ_û@L*!.!"_" û
ü[
P û!þqû!ü+
w w Cp ü]û!ýû
,%
6!w7K&
*!
S*=6
¡¢£E¤E¥§¦f¨¥©¢ª«
+*¥¢+j¬­¢K*
¥®*! ¯
A
¥®
F6* ¡¢£ ¤E¥°¦C±²'f³ ,³´*µ
ª«
¢7¶¡8·(¥¥®¬O¢¸'¹º£E¤ ¥°»:¼
¥
¹º¤E¼E¥!*¬K·(½
¥­£E¬O*¥¾ª«
*
¥C¿JÀH
¥¥=ÁN±Â Ã:
¥6*
¡¢}¬O¢«*¬Ä*!!
ÅEÆ
¼E&Ç:
+¢2!·8¢&²E¤GªÈ¥»:¼
2µ
¶OÁ ¨ ¼ Ç¢&²8µ
¶K*¬É¡7¥!¢¥=*!
Ê Å Æ ³cËG*¢AS¡
¥
¥@¤E+
¥*!U²¤Oµ
¼(¢'*6»:
¼ES£E¤E¥@ÁG±(Â ÃC¥!ÌC
E³
ÍÎ!Ï 7Ð8ÑÒ(ÓUÔ8Ô
Ay*!:*A6*
¡¢G£E¤ ¥¦ ± ¶¥!F¦f¨(²G¬ÖÕ«Â ×w¿ ×:Ø Ãf
¼
¥,²*¤E¥
·(¥!¼E
µ
¼(¢Ùª«
*
¥,³Ù»:¶¢c¶ ¢}¬K·E¥­¬O¢}×¾¥KÁ ± ²E¶¬Ú*
¥K¡7
¥!¢
¥=*!!
Ê ×
µ
¶FÛ!¥*
¥,³«ÜÙ¤E¥*
¬¡7¥!¢¥*! Ê ×¼E ¢'¬K·E¥F¬ÞÝ'·×K¥!· @& ¢
²
+Gµ
¶ß*
¬à¼ á ½(¢
¥*!Sâã×wØw¶¥!µ
¼(¢0·(­·EÙÇ!·E¢
¥H6* ¡¢O·(¥,³
6@7¶!¥!·Eä×ߥjÁ ± +åE ¢­¬O·E¥ä:
Ýy ÃS
¥*
¥,³ß6
K*!
«£E¤ ¥äÝy Ã+ ¢
¹º¤E¼E+F*¡7¥!¢N¥¦ ± Ê × ³
6·H*FÝA¥¥!·E¬OFªS·(&²Ù·EO**!
*K6
¡¢F£E¤ ¥j¦f¨
¥FæA¥¢
·8¯
¥¤ *¥7¶¥!¼*
=*!!
S*
6* ¡ ¢£ ¤E¥j¦ ±
¥,²a
½(¢O·E²c· ¾*K»w
¼E
£E¤ ¥çÁG±( Ã'·(¶¹G*¥j¡7
¥! ¢
¥®*!
S£ ¤E¥çÁ ¨ µ
¼(¢&²a* Ê ×©¢³j*¤E¬O¢K¡8·(¥!¥
*¬»:
¼Ea¼ M¹º¤E¼(¢Sª«
*
¥=¶!¥!¥@Á ¨ ¼E¥!·(¶=ªGµ
¶£ ¤E«¥@ÁG±A¥!· ¢a¼E¼ ·(¥¯
¼E¥ª«
*¥,²,+0µ
¶ß*¬è¼EáE½E¢¥H*!â×wسKG·E*¶ß·(¶¢y· 0Ý'¥µ
¼E¥
*O6* ¡ ¢£ ¤E¥ç¦ ¨ ¥¶!Oêé ëìÖ¡í­»:
¢²Ùª«¤E:
«¡HFÝ'¥µ&·(S*
­·(¥¼
µ
¼(¢¥
Ý'¥¢ ª«¤E¢¥·(¥!¼E*¢³
îSïUð
ñòó?ôßõCòö÷Gò õCø
Ý'¥¼
¥¤ ¬O¬­¥ä¾¤ a¥!·Ej6
¡¢¥ä¼E&¶!¢yª«
*
¥C²2
¥©×¯5ù6¤7¤E*¥!·8¢
¥
¬Õ«
+Âûú(ü!¿ ýþÃf
¼
¥,³
»:¶¢C¶ ¢,¬K·E¥GªÙµ
¶!£E¤E,·E¶!,²&¬O¢,ÿG¶¥!GÿfØM¶¥Nǹs¢²ªa!2ÿ¯;ù6¤¤ ¥!·(¢¥
¬ Õ«
+¼E
¥C
³ ;¬
¢
¥ùN¥!¤(¢
¥ Æ ¼E
¢S
¥»w
¼E
«µ
¶!¬Ý'¥¹h·(¥¼O*S¯
¢
¥KÝA·×*{Á ± ²*
¥O
¢×¯5ù6¤7¤E*¥·8¢«*'¡7¥!¢+¢² ¼ á ½E
2¤**}¼E
+
ú(üçéh*¾×¯;ùA¤7¤E*¥!·8¢=·(¶!­*¬ µ
¶ç¶!¥!*
¥§Õ«
+íN+ ¢&
³ ;¥j*&¬ ÕaÇ
ªSå(6· *y
ú ³{ÜÙ¤E¥@·O·(¶!«¼E¢S¬K·E¥¥!· ¢²7+S¬O·E¥F·E¶*¹J¥!
¥*!
¼EáE½
·(+ý þ¾¢ :¢A¶¥!@µ
¼(¢A·(S¥¡*6·£E¤ ¥F·E¥,³aÝA¥!!
½
¥!¹º¤E¼(¢A¬K·E¥@
¬
»:¼
&²(*
2£E¤ ¥­
}
ú Oéh
¬É¡7
¥! ¢
¥K*! Ê ×í{·(¶*¹wÁA¨Sµ
¼E¢
³ ;¥­&
¬ !·E
µ
¼E¢'*
G»w
¼E
'·E¶*¹Ù*
¥*!f¬O¢6
'¶!¬­¬O
Eü!²*
¬?¡7¥!¢¥*!
ëü
!#"%$!'&()+*-,.0/21!)+&43256,')+78)+(9,::/-0,;<&=*>)?;<&43>/?@A7(B/256,,.C9D)+()?
E <; &(:F0/>/G)?:03>*HI83?@0JC)?*K1!*HL!M)?*K,:B/ON!PRQS#JC)?/H)+5UTV,::W.(0/H)+*OXWY Z[/G3?]\::)2^_7C`a)+b43H)dc$!
e @0JC)+*>)+ E ;<&(:F0/>/G)?:f5hgi)+*>)+B;<&R:)?1)+#ji)+*<JC)+/H;<&0:)+M!:B;<&#,(1)?k+)?13?
lOmSn
oqpGrts#uwvxpGrAyvfrzyhpH{
|~}rx(}dGpH(
(. *>;<&
T(*<,;3>$!0,:i,/>;+,J((1c)+*>78)?/>/G)?*G3x56,-4.0*JC)OW)+3H)+29SF(*J()igK)?*H)?;<&V/H/H.0;<&()!@
JC)/G&0,:7RjD*<JR,.0;<&.(*OJC)d%6k+)+0k9SF(*DJC)gK)?*H)?;<&V/H/H.0;<&(),(1)?1)?7V)?x@!c!)+*>1:;<&0)+
53J()+*D%6k+)+0k9SF(*JC)2gi)+*>)+B;<&0/H/H.0;<&()_53:9S)-JC)/DgK)?*H)?;<&V/G70,.(5)?/?
<zz8(!>4 ¡4¢¤£z?¥¢¤£z8¦
§f¨>©ª+«¬­®8©¡¯K°]©¤±+ª<©²¡¬®³!´µ·¶¸¯­>³®¹tº»
¼½+¨H½+¬ª>¾±+¿>©ÀCÁ´µÃÂÄÅÆ ÇRÈÊÉ(Ë
x<zz8(!>4 ¡4¢¤£z?¥¢¤£z8¦
§f¨>©ª+«¬­®8©¡¯K°]©¤±+ª<©²¡¬®³!´µÃÂÄÅÆCÌÍfÎ ÇRÈÏÉ(Ë
¼½+¨H½+¬ª>¾±+¿>©ÀCÁ´µÃÂÄÅÆCÌ ÇRÈÏÉ(Ë
Ð
ÑÓÒÔÕDÒ#Ö×#Ò#Ø2ÙAØ2ÕOÚÛÜÕiÝzÕ
Þ 9S$:1)+VJC)+àßd)+70)+3H)+#á0VJC)Ü3JC)2gi)+*>)+B;<&0/>/G.0;<&0).x ,(]\4ji)+VJC.((1Vâ
ã ¡, 3>)+70,(b)?
ãä $78$3Hb
ã ßd)?$5)Ü3>*HB/>;<&()+gi)+*>)?;<&(.((1!)+
ã K$!5å(.C3H)?*H1!*>,å(&(b
Ñ
æç×#ÙAè-éêéëÕDÒ#ì¡è2ÙAÙz×Ò#Ø
\JC)?/H)+* E 3>)+::)Oji)+*<JC)+JC)í_.0,!JîðïA*>)+)/+@¡ñJîðïA*>)+)/.(0J ä ,(1!)ÜîðïA*>)+)/AT($*>5Ãc$!
\707(:BJC.((1!)+($C;<&(56,:f1!*H$!7Rk?.0/H,55)?(1)+9,/>/a3DJ(,*H1!)?/G3H)+::3?
\.(M!)+*<JC)+5ò/G0JJC)%6k+)+(k?)+)?()?*ïz,7V)?::)k+.0/>,55)+01)Ü9,!/H/G3?
óó
ôõ
ö
÷UøùDú+úÜù
ûàüýHþÿ?ý
ü ü ý ü ý ü ÿ#ü ü !
"# ý +ý%$!&'(ÿ $)&***
" ',+%*-./++10
+12
Quadtrees, Christian Höner zu Siederdissen
Quadtrees
Eine Betrachtung dieser lang
genutzten Art der Datenrepräsentation
Christian Höner zu Siederdissen
Universität Bielefeld, September 2003
choener@techfak.uni-bielefeld.de
Quadtrees sind einer der älteren Datenstrukturen in der Informatik.
Sie dienen derAufteilung von Räumen und werden trotz des Vorhandenseins
neuerer Strukturen weiterhin in vielen Bereichen verwendet.
Im Folgenden wird eine Art der Quadtree-Konstruktion genauer betrachtet,
sowie die Vor- und Nachteile dieser Datenstruktur.
1
Quadtrees, Christian Höner zu Siederdissen
Grundlegende Beschreibung von Quadtrees
Quadtrees sind eine einfach zu programmierende Struktur die in gewissen Bereichen höchst effektiv
eingesetzt werden kann, was es wert macht, sich diese genauer zu betrachten.
Quadtrees sind den verketteten Listen ähnlich und es wird davon ausgegangen das der Leser eine
Vorstellung davon hat, wie diese aussehen und programmiert werden. Die Literaturliste enthält
Hinweise auf Texte zu Listen.2 Für die beschriebenen Operationen sollte Basiswissen der
Geometrie ausreichend sein, da die Operationen im zweidimensionalen Raum dargestellt
werden.
Einige beispielhafte Anwendungsgebiete für Quadtrees
Das hauptsächliche oder zumindest bekannteste Anwendungsgebiet ist die Computergrafik.
Quadtrees eignen sich gut zur Speicherung von Landschaften und besonders Spiele greifen
häufig auf diese zurück. Ebenso helfen sie beim Ray-Tracing und „hidden surface removal“.
Weitere Anwendung finden Quadtrees unter anderem in der Bildanalyse und Bildkompression.
Definition des Quadtrees und der Knotenstruktur
Quadtrees dienen der Raumteilung. Objekte
innerhalb des partitionierten Raumes werden
nach ihrer Position in Gruppen geordnet. Die
Ordnung entsteht durch eine Baumstruktur in
der jeder Knoten entweder vier oder keinen
Kindsknoten enthält. Die Kindsknoten selbst
sind durch ihre geometrische Position
geordnet, wobei es keine Überlappungen der
Kindsknoten gibt. Knoten ohne weitere
Kinder werden Blattknoten genannt.
Seite
Ecke
Kante
Pseudocode der Struktur eines Knotens Erklärung
Knoten{
Elementliste
enthält die gespeicherten Objekte im Knoten
Kinderliste
enthält die 4 Kindsknoten (wenn existent)
Vater
verweist auf den Vaterknoten
Boundingbox
speichert die Position des Knotens in der Ebene
}
2
Quadtrees, Christian Höner zu Siederdissen
Ein Hinweis
Ausgehend von der beschriebenen Grundstruktur werden im Folgenden Operationen auf
Punktmengen durchgeführt. Punktmengen eigenen sich zur Demonstration hervorragend, da sie
nur durch ihre Koordinaten in (hier) zwei Dimensionen bestimmt werden. Im Anhang sind
Verweise zur Nutzung von Quadtrees für andere Datensätze als Punktmengen zu finden. Die
Literaturliste mag ebenso als Einstieg dienen.
3
Quadtrees, Christian Höner zu Siederdissen
Einen Quadtree aus einer Punktmenge erstellen
Die Grundoperation ist das Erstellen des Quadtrees selbst auf einer Menge. Die zu benutzende
Menge soll aus aus n Punkten mit jeweils (x,y)-Koordinaten bestehen, welche sich alle in einem
definiert begrenzten Feld befinden.
Sämtliche Punkte der Menge müssen von dem so genannten
Wurzelknoten eingeschlossen ein, welcher eine weitere
Bedingung erfüllen soll, seine Seitenlänge soll einer
Zweier-Potenz entsprechen. Dies ermöglicht für das
Beispiel eine einfache Partition des Raumes, stellt jedoch
für die Nutzung des Trees an Sich kein Muß dar.
Durch die Andeutung des Wurzelknotens ist bereits zu sehen,
das der Quadtree relativ viel „leeren Raum“ umschliessen
wird.
Der Partitionsalgorithmus verläuft relativ einfach: Befinden
sich im momentan Knoten (hier: der Wurzelknoten) nur
noch ein oder kein weiterer Punkt, so kann die
Partitionierung dieses Knoten beendet werden. Wenn dies
nicht der Fall ist, wie im Bild, so muss der aktuelle
Knoten weiter unterteilt werden, da jeder Knoten nur
maximal einen Punkt umfassen soll.
4
Quadtrees, Christian Höner zu Siederdissen
Sollten zwei oder mehr Punkte in diesem Knoten seien, so
werden für den Knoten vier Kindsknoten erzeugt und alle
im Knoten vorhandenen Punkte auf die vier Kindsknoten
verteilt. Es werden in jedem Fall alle vier Kindsknoten
erzeugt, auch wenn diese leer sein sollten nach Verteilung
aller Punkte. Dies vereinfacht und beschleunigt auf dem
Quadtree arbeitende Algorithmen.
Sollten sich Punkte auf den Trennlinien der Kindsknoten
befinden, so werden diese nach einer einfachen Formel
auf die Kindsknoten verteilt. DeBerg1 nutzt in seiner
Beispielimplementation Folgende:
Die vier Unterknoten NE, NW, SW, SE mit den
Mittelpunkten:
Xmid := (X+X‘) / 2
Ymid := (Y+Y‘) / 2
Verteilen nach:
Pne := {p € P : px > Xmid && py > Ymid}
Pnw := {p € P : px <= Xmid && py > Ymid}
Psw := {p € P : px <= Xmid && py <= Ymid}
Pse := {p € P : px > Xmid && py <= Ymid}
NE..SE sind die Unterknoten nach Kompassrichtung
Xmid, Ymid der Mittelpunkt des Knotens
Pne..Pse Einfügepunkt nach Unterknoten
p € P Punkt aus Punktmenge
Rekursiv wird nun für die vier vorhanden Kindsknoten
ebenso partitioniert, falls noch mehr als ein Punkt der
Menge sich in dem Quadrant des Kindsknoten befinden
sollte.
Dies Partitionierung erfolgt, wie in der Grafik ersichtlich, nur
im südwestlichen Knoten.
Dieses Verfahren wird solange fort geführt bis sich in jedem
einzelnen Knoten maximal ein Punkt der Punktmenge
befindet. Hierbei ist es durchaus normal, das an einigen
Orten sich Mengen von Knoten häufen, da dort mehr
Punkte auf engem Raum sind, als an anderen Orten.
5
Quadtrees, Christian Höner zu Siederdissen
Für die Partitionierung gelten folgende Kosten an Rechenzeit und Speicheraufwand:
Die Tiefe des Baumes:
d
Kleinste Punktdistanz:
c
Seitenlänge des Wurzelknotens
s
Die Anzahl der Punkte, welche im Baum
gespeichert werden sollen:
n
Die Anzahl der benötigten Knoten:
O ((d+1)n)
(in einem Baum mit „d“ Ebenen existieren maximal „n“ Knoten auf
jeder Ebene)2
Die benötigte Zeit zur Erstellung des Baumes:
O ((d+1)n)
(Anzahl der benötigten Knoten, Knoten können in konstanter Zeit
erstellt werden)2
Die minimale Tiefe des Baumes:
O (log n)
(optimale Verteilung führt zu log n Ebenen)2
Die maximale Tiefe des Baumes:
O (log (s/c))
Anzahl der Blattknoten bei vollständiger Balancierung2: (s/c)²
Pseudocode zur Partitionierung eines Knotens und Verteilung der Punkte auf seine Kinderknoten
Teile_Knoten (Punktmenge, Boundingbox)
wenn card(Punktmenge) <= 1 „return“
„erstelle Unterknoten“
„verteile Punktmenge nach Unterknoten-Boundingbox“
„für jeden Unterknoten:“
Teile_Knoten (Unterknoten->Punktmenge,
Unterknoten->Boundingbox)
6
Teile_Knoten nimmt eine Menge von
Punkten an und eine „Box“, die diese
Menge umfassen soll.
Sollte es nur noch maximal einen Punkt in
der Menge geben, so muss nicht weiter
geteilt werden und der Algorithmus
kann abbrechen.
So der Algorithmus nicht abbrach, werden
alle vier Unterknoten erstellt.
Mit Hilfe eines Algorithmus und
einfachen Regeln wird die
Punktmenge nun in vier Submengen
geteilt, welche auf die erstellten
Unterknoten verteilt wird.
Jeder der Unterknoten kann wieder mehr
als einen Punkt enthalten, deshalb wird
rekursiv der Algorithmus auf jeden
Unterknoten angewandt.
Quadtrees, Christian Höner zu Siederdissen
Dynamische Operationen auf einem Quadtree
Der erstellte Quadtree ist bisher noch statisch. Um ihn dynamisch zu machen soll es möglich sein,
beliebige Punkte zu löschen und einzufügen in den Baum. Ein Punkt wird nur dann gelöscht,
wenn er auch existiert, also gefunden wird, bzw. nur dann eingefügt, wenn er noch nicht an der
entsprechenden Stelle existiert. Alternativlösungen zu diesem Verfahren finden sich im Anhang
und auch in den Game Programming Gems3 4 5 6.
An Operationen werden das Einfügen, Löschen und Finden des nächsten Nachbarn besprochen.
Speziellere Formen von Quadtrees bieten noch weitere Möglichkeiten, doch soll dies ein
möglichst generischer Ausblick auf Quadtrees werden. Weitere Operationen werden detailliert in
den angegebenen Quellen aufgezeigt.
7
Quadtrees, Christian Höner zu Siederdissen
Das Einfügen eines Punktes in den Tree
Ein Punkt soll in den Quadtree eingefügt werden. Im
Wurzelknoten ist ein Punkt vorhanden.
Der einzufügende Punkt wird zunächst dem
Wurzelknoten hinzugefügt. Die Punktmenge im
Wurzelknoten ist in diesem Beispiel >1 deshalb wird
eine Partitionierung des Wurzelknotens durchgeführt
und beide Punkte auf die Kinderknoten verteilt.
Wäre kein Punkt im Wurzelknoten gespeichert gewesen,
so hätte auf eine Partitionierung verzichtet werden
können.
8
Quadtrees, Christian Höner zu Siederdissen
Ein weiterer Punkt wird dem Quadtree hinzu gefügt. Dieser
Punkt kann nicht im Wurzelknoten zu liegen kommen, da
dieser bereits mindestens einen Punkt enthält. (Der
Wurzelknoten ist partitioniert)
Der hinzu zufügende Punkt wird an den passenden Subknoten
weiter gereicht. (in diesem Falle der süd-westliche)
Da auch in diesem Knoten bereits ein Punkt vorhanden ist, wir
der Knoten geteilt und beide Punkt auf passende
Kinderknoten verteilt.
Da nun im gesamten Baum wieder maximal ein Punkt je
Knoten existiert, ist das Einfügen beendet.
Für das Hinzufügen gelten folgende Kosten an Rechenzeit und Speicheraufwand:
Die Knotentraversierung:
O (log n)
O (n) bei degeneriertem Baum
Die Einfügeoperation:
Gesamtbedarf an Speicher und Zeit:
O (1)
Zeitbedarf: O (log n) + O (1) (+ Balancierung)
(+ eventuelle Balancierung (siehe unten))
Speicherbedarf: O (1)
Pseudocode zum Einfügen eines Punktes in den Quadtree
Knoten <- root
Die Funktion wird mit dem Wurzelknoten „root“
beginnen
Punkt_hinzufügen (Knoten)
wenn „Knoten leer“ oder „nicht vorhanden“
„füge Punkt in Knoten ein“
sonst „finde den Punkt einschliessenden Kindsknoten n“
„erstelle 4 Kindsknoten“
„füge Punkt in passenden Knoten ein“
Punkt_hinzufügen (n)
9
sollte in dem jetzigen Knoten keine Partitionierung
vorhanden sein und ebenfalls kein vorhandener Punkt,
so füge den Punkt ein. Sollte der Knoten nicht
existieren, so wird er beim Einfügen erstellt. (wenn
der erste Punkt überhaupt eingefügt wird)
Ansonsten finde den passenden Kindsknoten (siehe
Formel weiter oben) und erstelle die vier Kindsknoten
(so nicht bereits vorhanden).
Füge dann den Punkt in den Kindsknoten ein.
Der Kindsknoten könnte ebenfalls mehr als das Maximum
an Punkten enthalten, deshalb rufe die Funktion
rekursiv auf dem Kindsknoten auf.
Quadtrees, Christian Höner zu Siederdissen
Das Löschen eines Punktes aus dem Quadtree
Es wird davon ausgegangen das der zu löschende Punkt
durch seine geometrische Position (x/y-Koordinaten)
genau zu bestimmen ist und im Tree existiert. Der
den Punkt haltende Blattknoten ist auf die selbe Art
zu finden, als würde man den zu löschenden Punkt in
den Tree einfügen wollen. Beginnend von der
Wurzelebene aus wird der Baum traversiert bis zum
Blattknoten.
Der Punkt wird nun aus dem Blattknoten gelöscht.
Rekursiv werden folgend die aufsteigenden
Vaterknoten untersucht und solange die Kindsknoten
gelöscht und eventuell vorhandene Punkte in die
Vaterknoten kopiert, wie das Partitionskriterium
nicht erfüllt wurde.
In diesem Fall wird eine Teilung entfernt, da im
südwestlichen Knoten nur noch ein Punkt existiert.
10
Quadtrees, Christian Höner zu Siederdissen
Für das Löschen gelten folgende Kosten an Rechenzeit und Speicheraufwand (Freigabe!):
Die Knotentraversierung:
O (log n)
O (n) bei degeneriertem Baum
Die Löschoperation:
O (1)
Gesamtbedarf an Speicher und Zeit:
Zeitbedarf: O (log n) + O (1) (+ Balancierung)
(+ eventuelle Balancierung (siehe unten))
Speicherfreigabe: O (1)
Pseudocode zum Löschen eines Punktes aus dem Quadtree
Initialisiere die Funktion mit dem
Knoten <- root
Wurzelknoten
Punkt_löschen (Knoten)
wenn „nicht vorhanden“ „return“
wenn der Knoten nicht vorhanden ist, so
beende hier.
wenn „Punkt in Knoten“ „lösche Punkt“
Sollte der Punkt im Knoten vorhanden
sein, so wird der Punkt gelöscht
sonst „finde den Punkt einschliessenden Kindsknoten n“ Der Punkt ist vielleicht in einem der
Kinderknoten dieses Knotens,
Punkt_löschen (n)
traversiere rekursiv den Baum
wenn „mindestens drei Kindsknoten leer“
„kopiere verbliebenen Punkt (wenn
den Vaterknoten“
„gehe in den Vaterknoten“
„lösche Kinderknoten“
11
Bei der Rückkehr aus der Rekursion
wird kontrolliert, ob drei von vier
Kindsknoten leer sind.
vorhanden) in So dem so ist, wird der letzte
verbliebene Punkt aus einem der vier
Kindsknoten in den Vater kopiert, so
ein Punkt vorhanden sein sollte.
Der Vaterknoten löscht nun die vier
Kinderknoten, da sie nicht zur
Partitionierung benötigt werden.
Quadtrees, Christian Höner zu Siederdissen
Den nächsten Nachbarn zu einem gegebenen Punkt finden
Bei bestimmten geeigneten Datensätzen eignen sich Quadtrees hervorragend dafür, den nächsten
Nachbarn zu einem gegebenen Punkt zu finden. Da jeder Punkt in seinem eigenen Blattknoten
liegt, muss der nächste Blattknoten in der zu suchenden Richtung gefunden werden. Soll nicht in
einer gegebenen Richtung gesucht werden, so erfolgt eine Suche in allen Acht Richtungen
(Nord, Nordwest,...) indem die Suchfunktion für alle acht Richtungen aufgerufen wird.
Sollte der Startknoten der Wurzelknoten sein, so kann die Suche
abgebrochen werden, da dann kein Nachbarknoten existieren
kann.
Ist der nächste Nachbarknoten einer der vier Knoten des
Vaterknotens, so ist die Suche ebenfalls deutlich vereinfacht und
es müssen nur noch eventuelle weitere Kinderknoten verglichen
werden.
Sollte dem nicht so sein, wir solange in die nächst höhere Ebene
gegangen, bis entweder der Wurzelknoten erreicht wurde, oder in
einen entsprechenden Nachbarknoten des Vaterknotens
gewechselt werden kann. Von diesem Nachbarknoten aus muss
dann in die Blattebene des Knotens gegangen werden, welche
sich eine Kante mit dem Startknoten teilt. Eine solche Kante
existiert immer, es sei denn, die Seiten des Wurzelknotens
wurden erreicht. In diesem Fall existiert in der angegebenen
Richtung kein Nachbar.
Der nächste Nachbar ist dadurch mit relativ wenigen Schritten zu
finden, solange der Tree nicht degeniert ist. In degenerierten
Bäumen ist die Suche deshalb erschwert weil es viele Ebenen
gibt.
Für das Finden des nächsten Nachbarn gelten folgende Kosten an Rechenzeit:
Startknoten:
v
Tiefe des Baumes:
Nächster Nachbar in bestimmter Richtung:
d
O (d+1)
(es muss maximal vom tiefst liegenden Blattknoten bis
zum Wurzelknoten und wieder eine Ebene hinab
gegangen werden)
12
Quadtrees, Christian Höner zu Siederdissen
Pseudocode zum Finden des nächsten Nachbarn:
Nördlicher_Nachbar (Knoten)
Die Funktion soll nur den nördlichen
Nachbarknoten finden. Das Vorgehen ist
analog für die sieben anderen Fälle.
wenn „Knoten = Wurzel“ „return null“
wenn „Knoten = SW“ „return NW“
wenn „Knoten = SE“ „return NE“
temp <- Nördlicher_Nachbar (Vaterknoten)
wenn „temp = null“ oder „temp = blatt“
„return temp“
sonst
wenn „Knoten = NW“ „return SW
von temp“
sonst „return SE von temp“
Sollten wir uns im Wurzelknoten befinden, so
wird abgebrochen, da die Wurzel keine
Nachbarn hat.
Für die südlichen Knoten (eines Vaterknotens)
können einfach die nördlichen Knoten
genommen werden, da immer alle vier
Knoten existieren.
Sollte es sich um die nördlichen Knoten
handeln, so muss der nördliche Nachbar des
Vaterknotens gefunden werden.
Wenn es keinen gibt so wird „null“ zurück
gegeben und die Funktion bricht ab. Sollte
der nördliche Nachbar ein Blattknoten sein,
so wird dieser ebenfalls einfach zurück
gegeben.
Ansonsten wird der passende Kinderknoten des
Nachbarn des Vaters zurück gegeben.
Zwecks erleichterter Darstellung wurde darauf
verzichtet von allen Knoten in die
potentiellen Blattknoten zu gehen. Dies ist
allerdings einfach machbar (besonders in
balancierten Bäumen, siehe unten).
13
Quadtrees, Christian Höner zu Siederdissen
Einen Quadtree balancieren
Das Balancieren eines Quadtrees ist eine spezielle Operation, die nicht wie die vorigen Operationen
zu den Basisoperationen gehört, sondern für bestimmte Nutzungen des Trees wichtig ist,
beispielsweise das Raytracing durch einen Tree. Ob balanciert wird, hängt damit von den Daten
und der Verwendung des Trees ab. Die Balancierung ist die einzige nicht grundlegende
Operation, die behandelt wird, da sie den Baum in einen „vorteilhaften“ Zustand bringt.
Ein balancierter Quadtree soll dabei so verändert werden, das für jeden Blattknoten gilt, das seine
Nachbarn sich maximal um eine gewisse Grössenkategorie unterscheiden. Dadurch sind jweils
nur wenige Schritte notwendig um den nächsten Nachbarn in einer bestimmten Richtung zu
finden.
Oft ist der geforderte maximale Grössenunterschied „2“, ein Unterschied von „1“ würde zu einem
vollständig ausgebildeten Tree führen mit der Maximalanzahl an Blattknoten und Unterschiede
grösser als „2“ führen praktisch zu keiner Balancierung mehr.
Dieser vollständige und korrekte Quadtree soll
balanciert werden, da die Differenz der Kantenlänge
zwischen den beiden grau gefärbten Blattknoten
grösser als „2“ ist. Dies gilt ebenso für andere
Kanten im Baum, diese werden analog bearbeitet,
bzw. deren Blattknoten, bis alle Blattknoten wurden.
Die Balancierung beginnt damit, alle Blattknoten in
eine Liste zu geben. Solange diese Liste nicht leer
ist, wird die Balancierung fort geführt. Begonnen
werden soll mit dem dunkel gefärbten Blatt im nordöstlichen Bereich. Da dieses Blatt eine Kante hat,
die um mehr als den Faktor zwei kleiner ist, wird
gesplittet.
14
Quadtrees, Christian Höner zu Siederdissen
Aus dem Blattknoten wird ein normaler Knoten mit
vier leeren Blättern, die ebenfalls in die Liste der
Blätter gegeben werden. Dieser bearbeitete
(ehemalige Blatt-)knoten fällt dafür aus der Liste
heraus. Sollte sich ein Punkt in dem Knoten
befinden, so wird er in dem korrekten Blattknoten
gespeichert.
Der nächste zu bearbeitende Blattknoten (weiss) wurde
bereits geteilt, da auch dieser Kanten besitzt, die der
Balancierung nicht genügen. Die vier neu erstellten
Blattknoten werden in die Liste der zu Bearbeitenden
eingefügt.
15
Quadtrees, Christian Höner zu Siederdissen
Auch während der Balancierung entstandene
Blattknoten müssen teilweise erneut vier eigene
Blattknoten erzeugen, wenn auch für diese Knoten
die Bedingung der Balancierung nicht erfüllt wurde.
Auch hierbei entstandene Blattknoten müssen in die
Liste der zu Bearbeitenden eingefügt werden, da die
Bedingung für alle Blattknoten später erfüllt sein
soll.
Diese Partitionierung kam nur deshalb zu Stande, weil
in einem anderen Blatt partitioniert werden musste.
Doch mit Setzen dieser vier Kinderknoten ist der
Vorgabe der Balancierung Genüge getan und jedes
Blatt hat zu jeder Seite hin maximal zwei Kanten.
Der hieraus gewonnene Vorteil ist, das der nächste
Nachbar zu jeder Kante in maximal drei Schritten
gewonnen ist.
(1) in den Vater empor steigen
(2) dessen Nachbarn finden
(3) in den (wenn vorhanden) Kinderknoten hinab
steigen
Die Balancierung garantiert dies.
Kosten an Rechenzeit und Speicher:
Knoten im Baum:
m
Knoten im balancierten Baum:
O (m)
Speicherbedarf für den balancierten Baum:
O (m)
16
Quadtrees, Christian Höner zu Siederdissen
Knoten im Baum:
Benötigte Schrittzahl:
m
O ((d+1)m)
(ein Baum der Tiefe d mit maximal m Blattknoten in der
tiefsten Ebene hat garantiert weniger als (d+1)m
Knoten)
Anmerkung:
Die Balancierung eines Trees ist eine potentiell teure Operation, welche allerdings in der Praxis oft
nur wenige Schritte benötigt.
17
Quadtrees, Christian Höner zu Siederdissen
Pseudocode zur Balancierung des Baumes:
Quadtree Balancieren
„alle Blätter in eine Liste geben“
Während „Liste nicht leer“
Der komplette Baum muss
traversiert werden und sämtliche
Blätter des Baumes in eine Liste
gegeben.
Für jedes Blatt in der Liste muss
durchgeführt werden:
„nehme ein Blatt aus der Liste“
Das Blatt selbst wird nur einmalig
verarbeitet
wenn „Blatt muss gesplittet werden“
Sollte es mehr als zwei Kanten
geben zu einer Seite hin:
„erstelle internen Knoten aus Blatt“
wenn „Knoten einen Punkt enthält“
Erstelle vier Kinderknoten in dem
Blatt, womit das Blatt zu einem
normalen Knoten wird.
Füge einen möglichen Punkt in den
passenden Kinderknoten ein.
„Punkt in passendes Blatt einfügen“
„füge die neuen Blätter in die Liste ein“
wenn „Knoten“ hat nun Nachbarn,
die gesplittet werden müssen“
„füge Nachbarn in Liste ein“
18
Die vier neuen Blätter müssen in die
Liste gegeben werden.
Der Knoten könnte Nachbarn
haben, die ebenfalls gesplittet
werden müssen, diese werden
ebenfalls in die Liste gefügt.
Quadtrees, Christian Höner zu Siederdissen
Zusammenfassung
Quadtrees sind eine Struktur zur Datenverwaltung, welche man nur mit Umsicht einsetzen sollte, da
sie ihre Vorteile nur bei sehr bestimmten Datensätzen entfalten können. Dies liegt besonders
daran, das Quadtrees nicht die Daten selbst partitionieren, sondern den Raum in dem diese Daten
sich befinden. Hat man Anwendungen, in denen die Daten relativ homogen im zu
partitionierenden Raum verteilt sind, so sind Quadtrees gut nutzbar, ansonsten besteht die Gefahr
das der Tree degeniert. Besonders negativ wirkt sich dabei aus, wenn der Datensatz auf einige
wenige Orte im Raum sich konzentriert, da dann die maximale Tiefe des Baumes sich immer
weiter von (log n) hin zu (n), mit „n“ als Baumtiefe, verschiebt. Hat man allerdings Daten,
welche sich gut eignen, so bietet der Quadtree einige Vorteile, wie den Zugriff mit Operationen
im Zeitbedarf von (log n) und sehr schnellen Intersektionstests.
In vielen Bereichen der Informatik gibt es neuere und bessere (vor allem: schnellere) Strukturen als
den Quadtree, doch durch seine Einfachheit besonders in der Implementation und durch
Einsatzgebiete in denen die Datensätze vorgegeben oder sehr passend sind bleibt der Quadtree
ein noch immer genutztes Werkzeug.
Alternativen zu Quadtrees sind beispielweise: „BSP-Trees“ „kd-Bäume“. Beide Begriffe mögen bei
der Suche hilfreich sein.
19
Quadtrees, Christian Höner zu Siederdissen
Anhang: eine kurze Vorstellung spezialisierter Quadtrees
Einige der Nachteile des vorgestellten Trees und der Algorithmen auf ihm lassen sich durch
spezialisierte Formen der Quadtreeerstellung umgehen oder zumindest mindern. Dies ist
besonders dadurch vorteilhaft, das ein prinzipieller Vorteil des Quadtrees erhalten bleibt, er ist
sehr einfach zu programmieren. Im Folgenden werden fünf spezielle Formen vorgestellt, die teils
Nachteile kompensieren, teils die schon existierenden Vorteile des Trees noch besser nutzbar
machen sollen.
Reguläre Quadtrees
Reguläre Quadtrees sind balancierte Quadtrees, bei denen alle Blattknoten ausgebildet wurden, die
gewählte Grössenkategorie bewusst „1“ ist. Jedes Blatt speichert in einem Vektor Referenzen auf
alle Nachbarblattknoten.
Intersektionstests, wenn auch nur Intersektion mit den Blättern, wird hierdurch eine extrem schnelle
Operation, da jeweils von einem Blatt zum nächsten gesprungen werden kann. Auch
Verschiebeoperationen von Datenelementen in einen anderen Blattknoten ist schnell möglich.
Diese beiden Vorteile werden allerdings durch einen grossen Speicheroverhead erkauft, welcher
durch viele leere Blätter entsteht. Ausserdem kann es passieren, das sich viele Datenelemente in
einem Blatt ansammeln und somit der Zugriff wieder langsam wird, abhängig von der Struktur,
welche die Datenelemente hält.
Der Knotenzugriff auf einen Blattknoten erfolgt in O (log n) ähnlich dem normalen Quadtree.
Intersektionstests sind in O (1) möglich, solange die Intersektionstests sich auf die Knoten
beschränken.
Der Speicherbedarf steigt von ca. (n * log n) auf (2n).
Objektmengen statt Punktmengen
Objekte unterscheiden sich von Punkten dadurch, das sie nicht nur durch einen Punkt (x,y)
gekennzeichnet sind, sondern ebenfalls durch einen Radius (r). (Rechtecke oder beliebige
Polygone können ebenfalls auf diese Art gespeichert werden, Kreise sind ein einfaches Mittel
zur Erklärung)
Objekte werden nun nicht mehr nur in den Blattknoten gespeichert, sondern können in jedem
Knoten gespeichert werden. Beginnend mit dem Wurzelknoten wird versucht, Objekte in einer
möglichst tiefen Ebene unterzubringen, bei der der Objektrand nicht mit den Knotengrenzen
überlappt. Ausserdem ist jeder Knoten in der Lage mehr als nur ein Objekt zu speichern (zum
Beispiel in Form von Listen).
Sämtliche Operationen auf einem solchen Baum verlängern sich um den Faktor „k“ der Anzahl der
im jeweiligen Knoten vorhandenen Elemente. Ein solcher Baum tendiert dazu, zu degenerieren,
da Objekte oft auf den Knotengrenzen liegen, sich oft gar im Wurzelknoten ansammeln, womit
die Zugriffe im worst case in O (n) liegen.
20
Quadtrees, Christian Höner zu Siederdissen
„lose“ Quadtrees
Lose Quadtrees versuchen Quadtrees für Objektmengen zu optimieren, so das eingefügte Objekte
nach Möglichkeit tiefer im Baum zu liegen kommen, als dies bei einem normalen Baum der Fall
wäre. Dies wird dadurch ermöglicht, das die Knotengrenzen sich jeweils überlappen dürfen, so
das ein Objekt, welches normalerweise nicht in einem Knoten allein gespeichert werden könnte,
dies nun kann.
Für alle Operationen gilt weiterhin, das sie sich um den Faktor „k“, der Anzahl der Objekte im
Knoten erhöhen, doch ist „k“ oftmals deutlich kleiner nun.
Quadtrees mit direktem Zugriff (direct access quadtree)
Quadtrees mit direktem Zugriff sind reguläre Quadtrees in denen Verweise auf die Knoten in einem
Vektor gespeichert werden. Dies erlaubt es auf die Knoten in O (1) Zugriff zu nehmen, wenn
man die geometrische Position des gewünschten Knotens kennt. Diese Art von Baum ist
besonders mächtig, wenn häufig Datensätze in den Baum eingefügt oder aus dem Baum gelöscht
werden müssen.
Operationen auf dem Baum benötigen die selben Zugriffszeiten, wie Operationen auf normalen
regulären Quadtrees. Im Unterschied zu diesen sind allerdings Zugriffe auf einzelne Knoten in O
(1) möglich.
Zu bedenken ist allerdings, das es hierbei um Zugriffe auf Knoten sich handelt. Jeder Knoten hält
eine Liste oder einen Vektor, der die einzelnen Objekte beinhaltet, wodurch der Objektzugriff
um den Faktor „k“ der Elemente im Knoten sich verlängert. Dies kann im worst case bei einem
schlechten Datensatz linearen Zugriff bedeuten und damit O (n).
Octrees
Octrees erweitern den Quadtree um die dritte Dimension, wie der Name bereits andeutet. Anstatt
nur in (x,y) bestimmt zu sein, werden Objekte in Octrees aufgrund ihrer (x,y,z)-Koordinaten in
ein dreidimensionales Gitter eingepasst. Vom hinzu Fügen der dritten Dimension abgesehen,
verhalten sich Octrees allerdings exakt wie Quadtrees und es sind auch sämtliche Operationen
möglich, sowie die Nutzung spezialisierter Varianten.
21
1 Computational geometry : algorithms and applications, Springer, 2e 2000, Marc de Berg, chapter 14, p.291-306
2 Algorithmic geometry, Cambridge Univ. Press, Cambridge, 1998., Jean-Daniel Boissonnat and Mariette Yvinec.
3 Game Programming Gems, Charles River Media, ISBN 1-58450-049-2, p.439 – 443, Octree Construction by Dan
Ginsburg
4 Game Programming Gems3, p.444 – 453, Loose Octrees by Thatcher Ulrich
5 Game Programming Gems 2, Charles River Media, ISBN 1-58450-054-9, p.388 – 393, Compressed Axis-Aligned
Bounding Box Trees by Miguel Gomez
6 Game Programming Gems 25, p.394 – 401, Direct Access Quadtree Lookup by Matt Pritchard
Fgt"MF/Dcwo
Lcp"Uejcghgt
UU"4225
Cwuctdgkvwpi"|wo"Xqtvtci"ko"Tcjogp"fgu
Ugokpctu"Cniqtkvjokuejg"Igqogvtkg
cp"fgt"Vgejpkuejgp"Hcmwnv v
fgt"Wpkxgtukv v"Dkgnghgnf
Xgtcpuvcnvgt
Ocvjkcu"Mcv|gt
Octe"Jcpjgkfg
Kpjcnv
30"Gkpngkvwpi
40"Oqvkxcvkqp
50"Cejvwpi<"*M"F+kogpukqpgp
60"Mqpuvtwmvkqp"gkpgu"MF/Dcwou
603"GhÞ"|kgp|"fgu"Mqpuvtwmvkqpucniqtkvjowu
70"Cniqtkvjogp"cwh "fgo"MF/Dcwo
703"Dgtgkejuuwejg
70303"GhÞ"|kgp|"fgt"Dgtgkejuuwejg
80"Xgtingkej"okv"cpfgtgp"Fcvgpuvtwmvwtgp
90"Cpygpfwpigp
:0"Hc|kv
30"Gkpngkvwpi
Yqtwo"uqnn"gu"kp"fkgugo"Cwhucv|"igjgpA"Fgt"Vkvgn"uciv"gu"dgtgkvu<"Gu"igjv"wo"MF/D wog0"Fkgug"Ctdgkv"gpvuvcpf"
ko"Tcjogp"fgu"Ugokpctu"Cniqtkvjokuejg"Igqogvtkg0"Fgt"Uejnwuu"nkgiv"pcjg."fcuu"gu"ukej"dgk"MF/D wogp"wo"
Fcvgpuvtwmvwtgp"kp"Dcwohqto"jcpfgnv0"Wpf"igpcwuq"kuv"gu"cwej0"MF"uvgjv"fcdgk"h¯t"M/fkogpukqpcn0"Fgt"Cwhucv|"
dgjcpfgnv" gkpg" Dcwofcvgpuvtwmvwt." fkg" h¯t" dgnkgdkifkogpukqpcng" Fcvgp" gt|gwiv" ygtfgp" mcpp0" Ykg" h¯t" D wog"
¯dnkej."uq"gto inkejv"cwej"fkgugt"gkpgp"uejpgnngp"¥witkhh "cwh "fkg"kp"kjo"gpvjcnvgpgp"Fcvgpgngogpvg0"Yqtkp"gt"
ukej"igpcw"xqp"cpfgtgp"D wogp"wpvgtuejgkfgv"ugk"jkgt"pqej"pkejv"xgttcvgp0"Xgttcvgp"yktf"pwt."fcuu"fkgug"Uejtkhv"
Gkpdnkem"igdgp"yknn"kp"fkg"Fcvgpuvtwmvwt"MF/Dcwo0"Ykg"ukg"gt|gwiv"yktf."ygnejg"Cniqtkvjogp"gu"cwh "kjt"ikdv."yq"
ukg"|wo"Gkpucv|"mqoov."ykg"ukg"ko"Xgtingkej"okv"cpfgtgp" jpnkejgp"Uvtwmvwtgp"cduejpgkfgv"wpf"cnu"Itwpfncig"
fkgugu"ngv|vgp"Rwpmvgu"pcv¯tnkej."kp"ygnejgp"GhÞ"|kgp|mncuugp"ukg"ukej"dgygiv0
40"Oqvkxcvkqp
Igigdgp" ugk" gkpg" Ogpig" igqogvtkuejgt" Rwpmvg" kp" dgnkgdkigt" Fkogpukqp0" Lgfgt" Rwpmv" dgÞ"pfgv" ukej" cp" gkpgt"
gkpfgwvkigp"Rqukvkqp."hguviguejtkgdgp"cnu"ugkpg"Mqqtfkpcvgp0"Pwp"uvgnngp"ykt"wpu"Htcigp"dg|¯inkej"fgt"Cpqtfpwpi"
fgt"Rwpmvg0"¥wo"Dgkurkgn<"Ygnejgt"Rwpmv"nkgiv"co"p ejuvgp"dgk"gkpgo"dguvkoovgp"igigdgpgpA"Ygnejg"Rwpmvg"
nkgigp"kp"gkpgo"igykuugp"DgtgkejA"Gu"ikdv"gkpg"Ogpig"Htcigp."fkg"ocp"dg|¯inkej"fgt"Cpqtfpwpi"fgt"Rwpmvg"uvgnngp"
mcpp0"Wo"gkpg"Cpvyqtv"cwh "fkgug"Htcigp"|w"Þ"pfgp"o¯uugp"qhvocnu"cnng"Rwpmvg"dguwejv"wpf"¯dgtrt¯hv"ygtfgp0"
Lgfgphcnnu"ygpp"ocp"cwh "fkg"pckxg"Ygkug"cp"fcu"Rtqdngo"jgtcpigjv0"Fkgu"kuv"pkejv"ugjt"ghÞ"|kgpv0"Fkg"GhÞ"|kgp|"
mcpp"gtjgdnkej"xgtdguugtv"ygtfgp."ygpp"ocp"|wp ejuv"fkg"Rwpmvogpig"kp"gkpgt"iggkipgvgp"Ygkug"xqtxgtctdgkvgv"
wpf"Xqtdgfkpiwpigp"uejchhv0"Fkgug"mcpp"ocp"ur vgt"h¯t"gkpgp"ghÞ"|kgpvgtgp"¥witkhh "cwh "fkg"Rwpmvg"cwupwv|gp0"
Pcv¯tnkej" mquvgv" fkgug" Xqtxgtctdgkvwpi" cwej" ¥gkv" wpf" Urgkejgt0" Uvgnnv" ocp" ukej" fkg" ingkejg" Htcig" hvgtu."
o inkejgtygkug"pwt"okv"xgt pfgtvgp"Rctcogvgtp."yktf"ukej"fgt"Cwhycpf"cdgt"uejpgnn"nqjpgp0
Gu"ikdv"xgtuejkgfgpg"Ogvjqfgp."fgp"¥witkhh "cwh "gkpg"igqogvtkuejg"Rwpmvogpig"|w"qrvkokgtgp0"Ogkuvgpu"ygtfgp"
fkg"Rwpmvg"|wp ejuv"kp"gkpgt"urg|kgnngp"Fcvgpuvtwmvwt"cdigngiv0"Cwh "fkgugt"Fcvgpuvtwmvwt"gzkuvkgtgp"Cniqtkvjogp."
fkg"dguvkoovg"Qrgtcvkqpgp"ghÞ"|kgpv"cwuh¯jtgp0"Fcdgk"ikdv"gu"pkejv"gkpg"ädguvgÑ"Fcvgpuvtwmvwt0"Ykg"uq"qhv"kp"fgt"
Kphqtocvkm"jcv"lgfg"Ogvjqfg"kjtg"Xqt/"wpf"Pcejvgkng"wpf"ocp"owuu"cdy igp"ygnejg"h¯t"gkp"igigdgpgu"Rtqdngo"
fgp"it ̌vgp"Pwv|gp"dtkpiv0
MF/D wog"ukpf"gkpg"fkgugt"Ogvjqfgp0"Ukg"ukpf"h¯t"fcu"
fkg" Dgtgkejuuwejg" |wiguejpkvvgp0" Cnuq" h¯t" fkg" Htcig<"
Ygnejg"Rwpmvg"nkgigp"kp"gkpgo"igigdgpgp"Dgtgkej0"
Urg|kgnn" dgk" D wogp" vtkvv" qhvocnu" fcu" Rtqdngo" fgt"
Gpvctvwpi"cwh0"Gkp"gpvctvgvgt"Dcwo"jcv"cnng"ugkpg"Dn vvgt"
gpvygfgt"cp"fgt"tgejvgp."qfgt"cp"fgt"nkpmgp"Ugkvg"lgfgu"
Mpqvgpu" j pigp0" Gt" ingkejv" cnuq" xqp" fgt" Uvtwmvwt" jgt"
gkpgt" Nkuvg" wpf" jcv" cwej" fkg" ingkejgp" Gkigpuejchvgp"
ycu" fkg" GhÞ"|kgp|" cpigjv0" Fcu" o ejvg" ocp" o inkejuv"
xgtogkfgp0"MF/D wog"igjgp"cwej"fkgugu"Rtqdngo"cp0
50"Cejvwpi<"*M"F+kogpukqpgp
Ykg" dgtgkvu" gty jpv." m ppgp" MF/D wog" h¯t"
dgnkgdkifkogpukqpcng" Fcvgp" gt|gwiv" ygtfgp0" Fgt"
Cdd04<"Gpvctvgvgt"Dkp tdcwo"okv":"Dn vvgtp0"Oczkocng"Vkghg
jkgt<"p"/"3"?"90"Fcjgt"¥witkhh "cwh "gkp"Dncvv"ykg"dgk"gkpgt"Nkuvg"kp"Q*p+0
Gkphcejjgkv" jcndgt" o ejvg" kej" cp" fkgugt" Uvgnng" fgp"
Cwhucv|" |wp ejuv" cwh " |ygk" Fkogpukqpgp" tgfw|kgtgp0"
Ygpp"cwu"fgo"Vgzv"pkejvu"cpfgtgu"jgtxqtigjv."uq"ukpf"uvgjvu"4fkogpukqpcng"MF/D wog"*gkigpvnkej"lc"4F/D wog+"
igogkpv0"Cp"iggkipgvgt"Uvgnng"ygtfg"kej"fcpp"lgygknu"fkg"Gtygkvgtwpi"cwh "M"Fkogpukqpgp"xqtpgjogp."ygpp"fkgu"
pqvygpfki"kuv0"H¯tu"gtuvg"igp¯iv"gu"ko"Mqrh "|w"dgjcnvgp."fcuu"cnngu"ycu"kp"fgp"p ejuvgp"Mcrkvgnp"iguciv"yktf"ukej"
kp"tgejv"cpcnqigt"Ygkug"xqp"|ygk"cwh "ogjt"Fkogpukqpgp"¯dgtvtcigp"n uuv0
60"Mqpuvtwmvkqp"gkpgu"MF/Dcwou
Gkp"MF/Dcwo"kuv"gkp"dcncpekgtvgt"Dkp tdcwo0"Fkg"Ctv"wpf"Ygkug"ugkpgt"Mqpuvtwmvkqp"ictcpvkgtv"fkgug"Gkigpuejchv0"
Fcokv"jcv"gt"pcv¯tnkej"cwej"fkg"Gkigpuejchvgp"gkpgu"uqnejgp0"Fgt"¥witkhh "cwh "gkp"dgnkgdkigu"Gngogpv."qfgt"Dncvv"
mcpp" kp" oczkocn" nqi" p" Uejtkvvgp" tgcnkukgtv" ygtfgp0" Fkg" Cwhvgknwpi" fgt" Rwpmvogpig" cwh " fgp" Dcwo" iguejkgjv"
cpjcpf"fgt"Mqqtfkpcvgp"fgt"Rwpmvg0"Jkgt"uqnn"pwp"|wp ejuv"fgt"Cniqtkvjowu"|wt"Mqpuvtwmvkqp"gkpgu"MF/Dcwou"
/"4"/
fwtej"Rugwfqeqfg"wpf"Dknfgt"gtmn tv"wpf"cpuejnkǧgpf"ugkpg"GhÞ"|kgp|"cpcn{ukgtv"ygtfgp0"Mqoogp"ykt"|wp ejuv"
|wo" Rugwfqeqfg0" Ykg" uq" qhv" ko" ¥wucoogpjcpi" okv" D wogp" mqoov" h¯t" fkg" Mqpuvtwmvkqp" fgu" MF/Dcwou"
gkp" tgmwtukxgt" Cniqtkvjowu" |wt" Cpygpfwpi0" Fkg" gkp|kig" Xqtdgfkpiwpi" kuv." fcuu" fkg" Rwpmvogpig" pcej" lgfgt"
Mqqtfkpcvg"uqtvkgtv"xqtnkgiv0
Cniqtkvjowu"DcwgMfDcwo*R."vkghg+
11"R<"Xqtuqtvkgtvg"Rwpmvogpig
11"vkghg<"Fgt|gkvkig"Vkghg"ko"Dcwo
kh"R"gpvj nv"pwt"gkpgp"Rwpmv
vjgp
tgvwtp"Dncvv"kp"fgo"fgt"Rwpmv"igurgkejgtv"kuv
gnug"kh"vkghg"igtcfg
vjgp"Vgkng"R"kp"|ygk"Wpvgtogpigp"okv"Jknhg"gkpgt"xgtvkmcngp"
Nkpkg"n"fwtej"fkg"okvvngtg"Z/Mqqtfkpcvg"fgt"Rwpmvg"kp"R0"Ugk"
R3"fkg"Rwpmvogpig"|wt"Nkpmgp"xqp"
"
"
wpf"R4"fkg"Rwpmvogpig"|wt"Tgejvgp"xqp"n0
"
"
gnug"Vgkng"R"kp"|ygk"Wpvgtogpigp"okv"Jknhg"gkpgt"jqtk|qpvcngp"
"
"
Nkpkg"n"fwtej"fkg"okvvngtg"[/Mqqtfkpcvg"fgt"Rwpmvg"kp"R0"" "
"
"
Ugk"R3"fkg"Rwpmvogpig"wpvgtjcnd"xqp"n"wpf"R4"fkg"Rwpmvogpig"
"
"
qdgtjcnd"xqp"n0
xnkpmu"">/"DcwgMfDcwo*R3."vkghg"-"3+
xtgejvu">/"DcwgMfDcwo*R4."vkghg"-"3+
Gtuvgnng"gkpgp"Mpqvgp"x."fgt"n"urgkejgtv."ocejg"xnkpmu"|w"ugkpgo"
nkpmgp"Mkpfmpqvgp"wpf"xtgejvu"|w"ugkpgo"tgejvgp0
tgvwtp"x
Fkg"Xqtigjgpuygkug"kuv"tgejv"ukorgn0"Ocp"dgikppv"fcokv"gkpg"Igtcfg"gpvncpi"gkpgt"Fkogpukqp"fwtej"fkg"Okvvg"
fgt"Rwpmvg"|w"ngigp0"Fcokv"kuv"fkg"Okvvg"fgt"Rwpmvg"dg|¯inkej"fkgugt"Fkogpukqp"igogkpv0"Fcu"Dgkurkgn"cwh "fgp"
hqnigpfgp" Ugkvgp" dgikppv" xgtvkmcn0" Fkg" gtuvg" Vtgppnkpkg" yktf" pwp" ko" Ywt|gnmpqvgp" fgu" Dcwou" cdigngiv0" Fkg"
dgkfgp"Mkpfgt"fgu"Mpqvgpu"mqttgurqpfkgtgp"okv"fgp"dgkfgp"Jcndgdgpgp."fkg"fwtej"fkg"Vtgppnkpkg"cwhigurcppv"
ygtfgp0"Ko"p ejuvgp"Uejtkvv"ygejugnv"ocp"pwp"fkg"Fkogpukqp"*ko"Dgkurkgn"xqp"xgtvkmcn"pcej"jqtk|qpvcn+."wpf"
vgknv" fkg" dgkfgp" Jcndgdgpgp" kp" fgt" lgygknkigp" Okvvg0" Pcv¯tnkej" lgv|v" fkg" Okvvg" dg|¯inkej" fgt" pgwgp" Fkogpukqp0"
Fkg"Vtgppnkpkgp"ygtfgp"kp"fgp"dgkfgp"Mkpfmpqvgp"fgu"Ywt|gnmpqvgpu"cdigngiv0"Fcokv"mqttgurqpfkgtgp"fkg"xkgt"
Mkpfmpqvgp"fgt"40"Gdgpg"fgu"Dcwou"*ykt"dgikppgp"dgk"2"|w"| jngp+"okv"fgp"xkgt"fwtej"fkg"Vtgppnkpkgp"dgitgp|vgp"
qhhgpgp"Gdgpgp0"Pwp"ygejugnv"ocp"ykgfgt"fkg"Fkogpukqp"*ko"Dgkurkgn"xqp"jqtk|qpvcn"pcej"xgtvkmcn."ocp"igjv"
/"5"/
cnuq"ko"Mtgku+"wpf"vgknv"fkg"xkgt"Wpvgtogpigp0"Uq"h jtv"ocp"hqtv0"Kuv"kp"gkpgt"fgt"Wpvgtogpigp"pwt"pqej"gkp"Rwpmv"
xqtjcpfgp." uq" yktf" fkgugt" |wo" Dncvv" fgu" Dcwou0" Gkpg" ygkvgtg" Vgknwpi" fgt" Ogpig"kuv" pkejv"ogjt" o inkej" wpf"
fkg"Dgctdgkvwpi"fkgugu"¥ygkigu"yktf"dggpfgv0"Fgt"Cniqtkvjowu"vgknv"uq"fkg"igucovg"Ogpig"cwh0"Gu"uvgnnv"ukej"fkg"
Htcig."ycu"rcuukgtv."ygpp"fkg"|w"vgkngpfg"Rwpmvogpig"gkpg"wpigtcfg"Cp|cjn"Rwpmvg"cwhygkuv0Ko"Dgkurkgn"yktf"fkg"
Xqtigjgpuygkug"pqej"ocn"fgwvnkejgt0
Cdd05<"Mqpuvtwmvkqp"gkpgu"MF/Dcwou"h¯t"gkpg"Rwpmvogpig"fgt"O ejvkimgkv"320"Fkg"Tgkjgphqnig"fgt"Mqp/
uvtwmvkqp"kp"fgp"Dknfgtp"gpvurtkejv"pkejv"fgt"Tgkjgphqnig"ko"tgmwtukxgp"Cwhdcw."fkg"fwtej"fgp"Rugwfqeqfg"
dguejtkgdgp"ywtfg0"Fkgug"gvycu"kpvwkvkxgtg"Knnwuvtcvkqp"xgtfgwvnkejv"cdgt"fkg"igpgtgnng"Xqtigjgpuygkug."fkg"
Kfgg"fgt"Mqpuvtwmvkqp"fgu"MF/Dcwou0
Fkg"tgmwtukxg"Hwpmvkqp"y¯tfg"pcv¯tnkej"|wgtuv"xqp"lgfgo"Mpqvgp"pcej"nkpmu"ncwhgp"wpf"gtuv"pcejfgo"ukg"
|w"fgo"Mpqvgp"|wt¯emigmgjtv"kuv"pcej"tgejvu0"Fgt"Dcwo"y¯tfg"cnuq"xqp"nkpmu"pcej"tgejvu"wpf"xqp"wpvgp"
pcej"qdgp"cwhigdcwv0
/"6"/
Fwtej"fkg"Ycjn"fgt"Vtgppwpi"koogt"kp"fgt"Okvvg"fgt"Rwpmvogpigp"kuv"ictcpvkgtv."fcuu"fkg"Cp|cjn"fgt"Dn vvgt"fgt"
|ygk"Mkpfvgknd wog"gkpgu"dgnkgdkigp"Mpqvgpu"wo"oczkocn"3"cdygkejv0"Fgt"Dcwo"kuv"cnuq"dcncpekgtv0"Gu"uvgnnv"ukej"
fkg"Htcig"ycu"rcuukgtv."ygpp"Rwpmvg"fkg"ingkejgp"Mqqtfkpcvgp"jcdgp0"Fkgu"m ppvg"|w"gkpgo"wpdcncpekgtvgp"Dcwo"
h¯jtgp." fc" fkg" Vtgppwpi" kp" fgt" Okvvg" fgt" Mqqtfkpcvgp" pwp" |ygk" xgtuejkgfgpo ejvkig" Wpvgtogpigp" gt|gwigp"
y¯tfg0" Ugnduv" Rwpmvg" okv" ingkejgp" Mqqtfkpcvgp" kp" pwt" gkpgt" Fkogpukqp" m ppgp" |w" fkgugo" Rtqdngo" h¯jtgp0"
Gkpg"O inkejmgkv"y tg."fkg"Mqqtfkpcvgp"|w"mqodkpkgtgp."cnuq"dgk"gkpgo"igigdgpgp"Rwpmv"okv"Mqqtfkpcvgp"*z.{+"
pgwg"Mqqtfkpcvgp"*z{."{z+"|w"dknfgp0"Ingkejg"Rwpmvg"ygtfgp"kp"gkpgt"Nkuvg"|wucoogpighcuuv"wpf"h¯t"fkg"Nkuvg"
pwt"gkpgp"Tgrt ugpvcpvgp"kp"fgt"Rwpmvogpig"dgncuugp0"Fkgu"tgkejv"cwu"wo"h¯t"cnng"|w"dgctdgkvgpfgp"Rwpmvg"kp"
lgfgt"Fkogpukqp"pwt"rcctygkug"xgtuejkgfgpg"Mqqtfkpcvgp"|w"ictcpvkgtgp0"Uqokv"kuv"ukejgtiguvgnnv."fcuu"fgt"Dcwo"
dcncpekgtv"cwuhcnngp"yktf0
603"GhÞ"|kgp|"fgu"Mqpuvtwmvkqpucniqtkvjowu
Ykg" ncpig" fcwgtv" gu" pwp" fkgugp" Dcwo" cwh|wdcwgpA" Wo" cdy igp" |w" m ppgp." qd" gu" ukej" ¯dgtjcwrv" nqjpv" gkp"
Rtqdngo" okv" Jknhg" gkpgu" MF/Dcwou" cp|wigjgp." uqnnvg" ocp" fkgug" Htcig" dgcpvyqtvgp0" Fgt" Gkphcejjgkv" jcndgt"
oqfkÞ"|kgtv"ocp"fkgug"Htcig"ogkuvgpu"gvycu"|w<"Ykg"ncpig"fcwgtv"gu"oczkocn"gkpgp"MF/Dcwo"cwh|wdcwgpA"Fkg"
GhÞ"|kgp|cpcn{ug"h¯t"fgp"yqtuv/ecug."fgp"uejnkoouvgp"Hcnn."kuv"ogkuv"ygugpvnkej"gkphcejgt"cnu"fkg""fgu"cxgtcig/ecug."
fgu"fwtejuejpkvvnkejgp"Hcnnu0"Dgko"cxgtcig/ecug"owuu"ocp"ukej"¯dgtngigp."ykg"fkg"Rwpmvogpigp"cwh "fgpgp"ocp"
ctdgkvgv"yqjn"ogkuvgpu"dguejchhgp"ukpf0"H¯t"fgp"yqtuv/ecug"¯dgtngiv"ocp"ukej"ngfkinkej."ykg"ukg"ko"uejnkoouvgp"Hcnn"
cwuugjgp"y¯tfgp0"Fgt"cxgtcig/ecug"gthqtfgtv"fcjgt"igpcwgtg"Mgppvpku"fgu"Cpygpfwpiuigdkgvu"wo"gkpg"Cwuucig"
fct¯dgt"ocejgp"|w"m ppgp"okv"ygnejgp"Fcvgp"ocp"ogkuvgpu"mqphtqpvkgtv"kuv0"Qhv"igp¯iv"gu"cdgt"dgtgkvu."ygpp"
ocp"ucigp"mcpp<"Gicn"ycu"mqoov."gu"mcpp"pkg"uejnkoogt"ygtfgp"cnu"000"0"Fkgu"gttgkejv"ocp"fwtej"fkg"Cpcn{ug"fgt"
yqtuv/ecug"GhÞ"|kgpv0
Ykt"ykuugp"dgtgkvu<"Lgfgt"MF/Dcwo"kuv"gkp"dcncpekgtvgt"Dkp tdcwo0"Wpf<"Dgxqt"ykt"fctcp"igjgp"m ppgp."fgp"Dcwo"
cwh|wdcwgp."o¯uugp"ykt"|wp ejuv"fkg"Rwpmvogpig"uqtvkgtgp0"Gu"n uuv"ukej"|gkigp."fcuu"fcu"Uqtvkgtrtqdngo"kp"fgt"
GhÞ"|kgp|mncuug"Q*p"nqi"p+"nkgiv0"Gu"ikdv"Cniqtkvjogp."fkg"kp"fkgugt"Mncuug"uqtvkgtgp0"¥wo"Dgkurkgn"Ogtiguqtv"wpf"
Swkemuqtv0"Fkgug"Cniqtkvjogp"uqnngp"jkgt"cdgt"pkejv"gtn wvgtv"ygtfgp0"Ykuugpuygtv"kuv"pwt."fcuu"fkg"Mqpuvtwmvkqp"
fgu"MF/Dcwou"cwh "lgfgp"Hcnn"kp"Q*p"nqi"p+"nkgiv0"Gkpg"dguugtg"GhÞ"|kgp|mncuug"kuv"pkejv"gttgkejdct."fc"ykt"uqtvkgtgp"
o¯uugp0"Gu"dngkdv"fkg"Htcig."qd"fgt"Cwhdcwcniqtkvjowu"kp"gkpgt"uejngejvgtgp"Mncuug"nkgiv0
/"7"/
Ykg"ko"Rugwfqeqfg"|w"ugjgp"kuv."owuu"fkg"Rwpmvogpig"kp"lgfgt"Tgmwtukqp"kp"fgt"Okvvg"igvgknv"ygtfgp0"Fc"ukg"h¯t"
lgfg"Fkogpukqp"uqtvkgtv"xqtnkgiv"wpf"mgkpg"Rwpmvg"okv"ingkejgp"Mqqtfkpcvgp"xqtmqoogp."kuv"fkgu"pkejv"ygkvgt"
uejykgtki0"Ocp"vgknv"ukg"gkphcej"dg|¯inkej"kjtgt"O ejvkimgkv"kp"ingkej"itq̌g"J nhvgp0"Fkgu"owuu"pcv¯tnkej"cpjcpf"
fgt"Uqtvkgtwpi"kp"fgt"cmvwgnngp"Fkogpukqp"iguejgjgp0"Dgiqppgp"yktf"|wo"Dgkurkgn"okv"fgo"mngkpuvgp"Gngogpv"
kp"fgt"uqtvkgtvgp"Nkuvg0"Fkgugu"wpf"fkg"fctcwh "hqnigpfgp"dku"|wt"Okvvg"ygtfgp"gkpgt"Wpvgtogpig"|wigqtfpgv."fkg"
¯dtkigp"fgt"cpfgtgp0"Pwp"ikdv"gu"cdgt"gkp"Rtqdngo<"Fkg"Uqtvkgtwpigp"h¯t"lgfg"Fkogpukqp"o¯uugp"kp"fgp"dgkfgp"
Vgknogpigp" gtjcnvgp" dngkdgp0" Wpf" gkpg" Pgwuqtvkgtwpi" mqoov" pkejv" kp" Htcig." fgpp" gu" uqnn" xgtokgfgp" ygtfgp."
h¯t"fgp"Vgknwpiuxqticpi"cwu"fgt"GhÞ"|kgp|mncuug"Q*p+"jgtcwu|wtwvuejgp0"Fkgu"y¯tfg"p onkej."ykg"ingkej"pqej"|w"
ugjgp"ugkp"yktf."fkg"Mqpuvtwmvkqp"fgu"Dcwogu"ncpiucogt"cnu"Q*p"nqi"p+"ocejgp0
Gu" hqniv" pwp" gkp" Xqtuejnci" |wt" N uwpi" fkgugu" Vgknwpiurtqdngou0" Cnu" Fcvgpuvtwmvwt" |wt" Urgkejgtwpi" fgt"
Rwpmvogpig" wpf" kjtgt" Uqtvkgtwpigp" yktf" gkpg" xgtmgvvgvg" Nkuvg" xgtygpfgv0" Fkg" Gngogpvg" fgt" xgtmgvvgvgp" Nkuvg"
gpvjcnvgp"fkg"Rwpmvg"fgt"Rwpmvogpig0"Ko"hqnigpfgp"kuv"okv"Xgtmgvvwpi"gkp"dguvkoovgt"Ygi"fwtej"cnng"Gngogpvg"
igogkpv0"Fctkp"mqoov"lgfgu"Gngogpv"igpcw"gkpocn"xqt0"Fkg"Xgtmgvvwpi"yktf."ykg"kp"xgtmgvvgvgp"Nkuvgp"¯dnkej."cnu"
Hqnig"xqp"¥gkigtp"tgcnkukgtv."fkg"kp"fgp"Gngogpvgp"fgt"Nkuvg"igurgkejgtv"ukpf0"Fkg"Uqtvkgtwpi"h¯t"lgfg"Fkogpukqp"
yktf"cnu"gkpg"uqnejg"Xgtmgvvwpi"cnngt"Gngogpvg"igurgkejgtv0"Gu"ikdv"cnuq"h¯t"lgfg"Fkogpukqp"gkpg"Xgtmgvvwpi"cnngt"
Rwpmvg0" O ejvg" ocp" fkg" Rwpmvg" kp" fgt" Tgkjgphqnig" kjtgt" Uqtvkgtwpi" dguwejgp." owuu" ocp" pwt" fkg" Xgtmgvvwpi"
Cdd06<"Ogjthcej"xgtmgvvgvg"Nkuvg."fkg"fkg"Rwpmvg"gpvj nv0"Jkgt"h¯t"ftgk"Fkogpukqpgp0"Fkg"Rhgkng"tgrt ugpvkgtgp"¥gkigt"xqp"gkpgo"Gngogpv"|wo"p ejuvgp0
gpvncpi"ncwhgp0"Mqoogp"ykt"|wo"Vgknwpiuxqticpi0"Fc"wpu"fkg"O ejvkimgkv"fgt"Nkuvg"dgmcppv"kuv."kuv"wpf"cwej"
fkg"O ejvkimgkv"o"kjtgt"J nhvgp"dgmcppv0"Ykt"fwtejncwhgp"cnuq"o"Gngogpvg"gpvncpi"fgt"Uqtvkgtwpi"fgt"cmvwgnngp"
Fkogpukqp"wpf"octmkgtgp"fkgug0"Ukg"igj tgp"|w"fgt"gkpgp"J nhvg."fkg"wpoctmkgtvgp"|wt"cpfgtgp0"Pwp"hqniv"fcu"
⁄dgtpgjogp"fgt"Uqtvkgtwpi"gpvncpi"gkpgt"cpfgtgp"Fkogpukqp"kp"fkg"dgkfgp"J nhvgp0"Fkgu"iguejkgjv."kpfgo"ykt"
cp" fgt" Xgtmgvvwpi" fkgugt" cpfgtgp" Fkogpukqp" gpvncpi" ncwhgp" wpf" fkg" Octmkgtwpigp" fgt" Gngogpvg" dgvtcejvgp0"
Kuv"gkp"Gngogpv"octmkgtv."uq"gtuvgnngp"ykt"ko"|wngv|v"ighwpfgpgp"octmkgtvgp"Gngogpv"gkpgp"¥gkigt"cwh "fcu"pgwg"
/"8"/
ighwpfgpg0"H¯t"fkg"Wpoctmkgtvgp"xgthcjtgp"ykt"cpcnqi0"
Fkg"Nkuvg"owuu"uq"h¯t"lgfg"Fkogpukqp"gkpocn"mqorngvv"
fwtejncwhgp"ygtfgp0"Ykt"dngkdgp"cnuq"kp"Q*p+0
Okv"fkgugo"Ykuugp"n uuv"ukej"|gkigp."fcuu"fkg"Mqpuvtwmvkqp"
gkpgu"MF/Dcwou"kp"Q*p"nqi"p+"nkgiv0"Fc"fkg"Rwpmvogpig"
dgk" lgfgt" Tgmwtukqp" cwhigvgknv" yktf" wpf" mgkpg" Rwpmvg"
Cdd07<"Tgmwtukqpudcwo"wpf"Uejtkvvg"rtq"Tgmwtukqp"wpf"Tgmwtukqpu/
gdgpg0"Jkgt"h¯t"gkpg"Rwpmvogpig"fgt"O ejvkimgkv":0"Ocp"gtmgppv"fkg"
nqi"p"-"3"Gdgpgp"wpf"fkg"p"Uejtkvvg"rtq"Gdgpg0
xgtfqrrgnv" ygtfgp" wpf" mgkpg" pgwgp" jkp|wmqoogp."
o¯uugp" rtq" Tgmwtukqpugdgpg" Vgknogpigp" okv" gkpgt"
Igucovo ejvkimgkv" xqp" p" cwhigvgknv" ygtfgp0" Fkg"
Vgknogpigp"ygtfgp"|yct"rtq"Tgmwtukqpgdgpg" koogt"wo"fkg"J nhvg"mngkpgt."fcdgk"xgtfqrrgnv"ukej"kjtg"Cp|cjn"
cdgt0"Fkg"Vgknwpi"fgt"Ogpigp"gthqtfgtv"cnuq"rtq"Gdgpg"p"Uejtkvvg0"Fc"fkg"Ogpigp"lgfguocn"jcndkgtv"ygtfgp."ukpf"
ukg" kp" nqi" p" Uejtkvvgp" cwh " gkpgngogpvkig" Ogpigp" |wucoogpiguejtworhv." fgt" Cniqtkvjowu" vgtokpkgtv0" Gu" ukpf"
cnuq"nqi"p"-"3"Tgmwtukqpgdgpgp"p vki"wo"fkg"Ogpig"mqorngvv"|w"|gtvgkngp0"Cwh "fgt"ngv|vgp"Gdgpg"owuu"|yct"
pkejv"ogjt"igvgknv"ygtfgp."gkp"Xgtingkej"kuv"cdgt"fqej"p vki0"Gu"owuu"uejnkǧnkej"igrt¯hv"ygtfgp."qd"pwt"pqej"gkp"
Gngogpv"kp"fgt"Ogpig"xqtjcpfgp"kuv0"Fcokv"jcdgp"ykt"h¯t"fgp"Mqpuvtwmvkqpucniqtkvjowu"gkpg"GhÞ"|kgp|mncuug"
xqp"Q*p"nqi"p+0"Fkgu"iknv"h¯t"¥gkv"wpf"Urgkejgt."fc"gkp"Dkp tdcwo"p"nqi"p"Mpqvgp"wpf"Dn vvgt"gpvj nv"wpf"fgt"MF/
Dcwo"gkp"Dkp tdcwo"kuv0
Gdgphcnnu" iknv" fkgu" h¯t" Rwpmvogpigp" kp" j jgtfkogpukqpcngp" T wogp0" Fkg" Mqpuvtwmvkqpuygkug" fgu" MF/Dcwou"
fwtej"Cwhvgknwpi"fgt"Ogpig"kp"koogt"|ygk"Wpvgtogpigp"gpvncpi"tgkjwo"ygejugnpfgt"Fkogpukqpgp"uqtiv"fch¯t."
fcu"ukej"dgnkgdkifkogpukqpcng"Ogpigp"xqnnuv pfki"kp"gkpgo"Dkp tdcwo"okv"lg"|ygk"Mkpfgtp"rtq"Mpqvgp"urgkejgtp"
ncuugp0"Fgt"Mqpuvtwmvkqpucniqtkvjowu"igjv"dgk"M"Fkogpukqpgp"igpcwuq"xqt"ykg"dgk"|ygkgp0"Nkpkgp"ukpf"fwtej"
Hn ejgp."d|y0"J{rgtà" ejgp"|w"gtugv|gp."Hn ejgp"fwtej"T wog."d|y0"J{rgtt wog0
/"9"/
70"Cniqtkvjogp"cwh "MF/D wogp
703"Dgtgkejuuwejg
Gkpg" urg|kgnng" Cpygpfwpi" xqp" MF/D wogp" kuv" fkg" Dgtgkejuuwejg0" Fcdgk" igjv" gu" wo" fkg" Htcig"
äYgnejg" Rwpmvg" dgÞ"pfgp" ukej" kp" gkpgo" igigdgpgp" TgejvgemAÑ0" MF/D wog" m ppgp" fkgug" Htcig"
qhv" tgejv" uejpgnn" dgcpvyqtvgp0" Wo" fkg" Xqtigjgpuygkug" dgk" fgt" Dgtgkejuuwejg" kp" gkpgo" MF/
Dcwo"|w"gtmn tgp."owuu"|wp ejuv"fgt"Dgitkhh "fgt"Tgikqp"gtn wvgtv"ygtfgp0"Dgk"fgt"Mqpuvtwmvkqp"fgu"MF/Dcwou"
ywtfg"gkpg"Cp|cjn"Vtgppnkpkgp"fwtej"fkg"Rwpmvogpig"igngiv0"Lgfg"fkgugt"Nkpkgp"mqttgurqpfkgtv"okv"gkpgt"igykuugp"
Hn ejg"ko"|ygkfkogpukqpcngp"Tcwo0"Gu"jcpfgnv"ukej"fcdgk"wo"fkg"Hn ejg."fkg"xqp"fgt"Nkpkg"fwtejoguugp"wpf"
igvgknv"yktf0"Fc"fkg"Vtgppnkpkgp"kp"fgp"Mpqvgp"fgu"Dcwou"igurgkejgtv"ygtfgp."mqttgurqpfkgtv"cwej"lgfgt"Mpqvgp"
okv"gkpgt"uqnejgp"Hn ejg0"Fkg"Jkgtctejkg"fgt"Mpqvgp"n uuv"ukej"gdgphcnnu"cwh "fkg"Nkpkgp"¯dgtvtcigp"wpf" w̌gtv"
ukej"fgtctv."fcuu"¯dgtigqtfpgvg"Nkpkgp"fkg"Tgikqpgp"wpvgtigqtfpgvgt"Nkpkgp"dgitgp|gp0"Fkgu"n uuv"ukej"co"dguvgp"
cpjcpf"gkpkigt"Dknfgt"|gkigp0
Cdd08<"Tgikqp"fgt"gtuvgp"Vtgppnkpkg."d|y0"fgu"gtuvgp"Mpqvgpu0"Fkg"Nkpkg."gkigpvnkej"
Cdd0:<"Tgikqp"fgt"ugejuvgp"Vtgppnkpkg0"Dgitgp|v"fwtej"fkg"¯dgtigqtfpgvg"ftkvvg"
/":"/
Ocp" ukgjv" ugjt" fgwvnkej." ykg" fkg" Uvtwmvwt" fgu" Dcwou" ukej" igqogvtkuejg" cwungigp" n uuv0" Qd" gkp" Mpqvgp" nkpmgu"
qfgt"tgejvgu"Mkpf"ugkpgu"Xcvgtu"kuv."dguvkoov"cwh "ygnejgt"Ugkvg"fkg"Vtgppnkpkg"fgu"Xcvgtu"fkg"Tgikqp"fgu"Mkpfgu"
dgitgp|v0"Cwh "fkgug"Ygkug"n uuv"ukej"dgko"Cduvkgi"fwtej"fgp"Dcwo"|w"gkpgo"Mpqvgp"fguugp"Tgikqp"dguvkoogp0"
Kp" fgp" Mpqvgp" ukpf" fkg" Mqqtfkpcvgp" fgt" Vtgppnkpkgp" igurgkejgtv0" Y jtgpf" fgu" Cduvkgiu" m ppgp" pcej" wpf"
pcej"fkg"Dgitgp|wpigp"fgt"Tgikqp"cdigngugp"ygtfgp0"Tgikqpgp"wpvgtigqtfpgvgt"Mpqvgp."cnuq"xqp"Mpqvgp."fkg"
wpvgtjcnd"gkpgu"cpfgtgp"Mpqvgpu"nkgigp."ygtfg"kej"ko"Ygkvgtgp"cnu"wpvgtigqtfpgvg"Tgikqpgp"dg|gkejpgp0"Ukg"ukpf"
fgt"Tgikqp"fkgugu"¯dgtigqtfpgvgp"Mpqvgpu"wpvgtigqtfpgv0"Fkg"Tgikqpgp"fgt"Mpqvgp"wpvgtnkgigp"cnuq"fgt"ingkejgp"
Jkgtctejkg"ykg"fkg"Mpqvgp"ugnduv0
H¯t" fkg" Dgtgkejuuwejg" ukpf" fkg" Tgikqpgp" xqp" Dgfgwvwpi0" Wo" |w" dgcpvyqtvgp." ygnejg" Rwpmvg" kp" gkpgo"
igigdgpgp"Tgejvgem"nkgigp."igjv"ocp"hqnigpfgtocuugp"xqt<"Ocp"uvgkiv"fgp"Dcwo"tgmwtukx"xqp"fgt"Ywt|gn"cwu"
jgtcd."dguvkoov"h¯t"lgfgp"Mpqvgp"ugkpg"Tgikqp"wpf"rt¯hv"cwej"uqhqtv."qd"fkg"Tgikqp"xqp"gkpgt"fgt"Ugkvgp"fgu"
Tgejvgemu"iguejpkvvgp"yktf0"Kuv"fkgu"fgt"Hcnn."uq"o¯uugp"cwej"fkg"Tgikqpgp"fgt"Mkpfgt"fgu"cmvwgnngp"Mpqvgpu"
igrt¯hv"ygtfgp0"Yktf"fkg"Tgikqp"lgfqej"pkejv"iguejpkvvgp."uq"ygǩ"ocp."fcuu"cwej"fkg"Tgikqpgp"cnngt"Mpqvgp"
wpvgtjcnd" fgu" cmvwgnngp" Mpqvgpu" pkejv" xqo"
Tgejvgem" dgt¯jtv" ygtfgp0" Ocp" mcpp" fcpp"
cnuq"fkg"Tgmwtukqp"h¯t"fkgugu"¥ygki"dggpfgp0"
Uvgnnv"ocp"hguv."fcuu"ukej"fkg"cmvwgnng"Tgikqp"
xqnnuv pfki"ko"Tgejvgem"dgÞ"pfgv."uq"m ppgp"
cnng" Dn vvgt" wpvgtjcnd" fgu" cmvwgnngp" Mpqvgpu"
|wt¯emigigdgp" ygtfgp0" Ukg" nkgigp" kp" lgfgo"
Hcnn"cnng"ko"Tgejvgem0
Fkg" Uwejg" uv¯v|v" ukej" cwh " fkg" Jkgtctejkg"
fgt"
Tgikqpgp"
wpf"
Vtgppnkpkgp0"
Fc"
wpvgtigqtfpgvg" Tgikqpgp" koogt" pwt" " fkg"
Hn ejg" kjtgt" ¯dgtigqtfpgvgp" Tgikqp" ygkvgt"
cwhvgkngp" wpf" fkg" ¯dgtigqtfpgvg" ykgfgtwo"
xqp"kjtgt"¯dgtigqtfpgvgp"Vtgppnkpkg"dgitgp|v"
yktf."kuv"mnct."fcuu"cwej"cnng"wpvgtigqtfpgvgp"
Cdd032<"Dgtgkejuuwejg"kp"gkpgo"MF/Dcwo0"Tqv"<"Dgtgkejg."fkg"igrt¯hv"ygtfgp"o¯uugp0"
Uejyct|<"Wpdgt¯jtvg"Dgtgkejg0"It¯p<"Dgtgkejg."fkg"wpigrt¯hv"|wt¯ejigigdgp"ygtfgp"m p/
pgp0"Ocp"ukgjv."dgk"mngkpgo"Uwejdgtgkej""m ppgp"igycnvkig"Gkpurctwpigp"o inkej"ygtfgp0
Tgikqpgp" xqp" fkgugt" Vtgppnkpkg" dgitgp|v"
ygtfgp0" DgÞ"pfgv" ukej" cnuq" fgt" Uwejdgtgkej"
/";"/
|wo"Dgkurkgn"xqnnuv pfki"tgejvu"xqp"gkpgt"Vtgppnkpkg."uq"o¯uugp"fkg"Tgikqpgp"nkpmu"xqp"fgt"Vtgppnkpkg"pkejv"ygkvgt"
dgt¯emukejvkiv"ygtfgp0"Lg"pcejfgo."ykg"fgt"Uwejdgtgkej"cwuh nnv."m ppgp"fcjgt"ygkvg"Vgkng"fgu"Dcwogu"wpdgt¯jtv"
dngkdgp0
70303"GhÞ"|kgp|"fgt"Dgtgkejuuwejg
Gu" hqniv" pwp" fkg" Cpcn{ug" fgt" GhÞ"|kgpv" fgu" yqtuv/ecug" fgt" Dgtgkejuuwejg0" Ykg" uejqp" kp" Cduejpkvv" 603" ¯dgt"
fkg" GhÞ"|kgp|" fgu" Mqpuvtwmvkqpucniqtkvjowu" iguciv." igjv" gu" dgk" fgt" yqtuv/ecug" GhÞ"|kgp|cpcn{ug" fctwo." fgp"
uejngejvguvo inkejgp"Hcnn"|w"Þ"pfgp"wpf"ugkpg"GhÞ"|kgp|"|w"dguvkoogp0"Fkg"Dgtgkejuuwejg."d|y0"fcu"Fwtejncwhgp"
fgu" MF/Dcwogu" wpf" fkg" ⁄dgtrt¯hwpi" fgt" gkp|gnpgp" Mpqvgp" wpf" Dn vvgt." igjv" wo" uq" uejpgnngt" xqp" uvcvvgp."
lg" ygpkigt" Tgikqpgp" xqo" Uwejtgejvgem" iguejpkvvgp" ygtfgp0" Yktf" gkpg" Tgikqp" iguejpkvvgp." uq" owuu" cwh " fgt"
p ejuvvkghgtgp" Gdgpg" gdgphcnnu" igrt¯hv" ygtfgp0" Yktf" gkpg" Tgikqp" pkejv" iguejpkvvgp." mcpp" fkg" Uwejg" h¯t" fkg"
wpvgtigqtfpgvgp" Tgikqpgp" dggpfgv" ygtfgp0" Jkp|w" mqoov." fcuu" fcu" ¥wt¯emigdgp" fgt" ighwpfgpgp" Dn vvgt"
gdgphcnnu"¥gkv"kp"Cpurtwej"pkoov0"Fctcwu"gtikdv"ukej."fcuu"fgt"yqtuv/ecug"fgt"Dgtgkejuuwejg"fcpp"gkpvtkvv."ygpp"
fcu"Uwejtgejvgem"o inkejuv"itq̌"kuv."fkg"igucovg"Rwpmvogpig"wohcuuv0"Fc"fgt"MF/Dcwo"dcncpekgtv"kuv."jcdgp"fkg"
Mpqvgp"cwh "gkpgt"Gdgpg"cnng"fkg"ingkejg"Cp|cjn"Mkpfmpqvgp"*okv"gkpgt"oczkocngp"Cdygkejwpi"xqp"3+0"Fcu"jgǩv"
cdgt"cwej."fcuu"cnng"Tgikqpgp"fkg"ingkejg"Cp|cjn"¯dgtigqtfpgvgt"Tgikqpgp"jcdgp0"Fctcwu"hqniv."fcuu"gicn"yq"ocp"
gkpg" jqtk|qpvcng" qfgt" xgtvkmcng" Igtcfg" fwtej" fkg" Rwpmvogpig"
ngiv." koogt" fkg" ingkejg" Cp|cjn" cp" Tgikqpgp" iguejpkvvgp" yktf0"
Ygpkigt"m ppgp"gu"pwt"ugkp."ygpp"gu"mgkpg"Igtcfg"uqpfgtp"pwt"
gkpg" Uvtgemg" kuv" wpf" fkgug" pkejv" fkg" igucovg" Cwufgjpwpi" fgt"
Rwpmvogpig" ¯dgturcppv0" Fkg" oczkocng" Cp|cjn" cp" Tgikqpgp"
yktf" cnuq" fcpp" iguejpkvvgp." ygpp" fcu" Uwejtgejvgem" cwu" xkgt"
Uvtgemgp"dguvgjv."|ygk"jqtk|qpvcngp"wpf"|ygk"xgtvkmcngp."fkg"fkg"
igucovg"Cwufgjpwpi"fgt"Rwpmvogpig"wourcppgp0"Kp"fgo"Hcnn"
o¯uugp" pcv¯tnkej" cwej" cnng" Rwpmvg" |wt¯emigigdgp" ygtfgp." ukg"
nkgigp"lc"cnng"ko"Tgejvgem0"Fkg"Htcig"kuv"fcjgt."ykgxkgng"Tgikqpgp"
igrt¯hv" ygtfgp" o¯uugp." d|y0" ykgxkgng" xqp" fgp" xkgt" Uvtgemgp"
iguejpkvvgp"ygtfgp0
/"32"/
Cdd033<"Uejgocvkuejg"Fctuvgnnwpi"fgt"Tgmwttgp|0"Ko"Mpqvgp"
cwh "fgt"20"Gdgpg"xgtn whv"fkg"Vtgppnkpkg"rctcnngn"|wt"Dgtgkeju/
itgp|g."gu"yktf"pwt"gkpg"Mkpftgikqp"iguejpkvvgp0"Fkg"Mkpfgt"fgu"
uejyct|gp"Mpqvgp"cwh "fgt"30"Gdgpg"ygtfgp"dgkfg"iguejpkvvgp0"
H¯t"ukg"mcpp"gtpgwv"fcu"Uejgoc"gkpigugv|v"ygtfgp0"Fcu"Uejgoc"
kuv"cnuq"tgmwtukx0"Gu"xgtfgwvnkejv"fkg"Tgmwttgp|hqtogn0
Wo"fkgu"|w"dgcpvyqtvgp."dgvtcejvgp"ykt"pwt"gkpg"fgt"Uvtgemgp0"Okv"fgp"cpfgtgp"xgtj nv"gu"ukej"uejnkǧnkej"igpcwuq0"
Fkg"⁄dgtngiwpi"kuv"hqnigpfg<"Jcdgp"ykt"gu"okv"gkpgt"fgt"xgtvkmcngp"Uvtgemgp"|w"vwp."uq"gtigdgp"ukej"|ygk"H nng0"
Fgt"gtuvg"Hcnn"vtkvv"gkp."ygpp"fkg"Vtgppnkpkg"fgt"cmvwgnn"dgvtcejvgvgp"Gdgpg"gdgphcnnu"xgtvkmcn"xgtn whv0"Fcpp"mcpp"
fkg"Uvtgemg"pwt"cwh "gkpgt"Ugkvg"fkgugt"Vtgppnkpkg"nkgigp."tgejvu"qfgt"nkpmu0"Kp"uq"gkpgo"Hcnn"yktf"cnuq"pwt"gkpg"fgt"
wpvgtigqtfpgvgp"Tgikqpgp"iguejpkvvgp0"Fcu"jgǩv."Tgikqpgp."fkg"cwh "fgt"cpfgtgp"Ugkvg"nkgigp."m ppgp"wpvgt"mgkpgp"
Wouv pfgp"ogjt"iguejpkvvgp"ygtfgp0"Kuv"fkg"Vtgppnkpkg"jkpigigp"jqtk|qpvcn."uq"ygtfgp"dgkfg"wpvgtigqtfpgvgp"
Tgikqpgp"iguejpkvvgp0"Fkgug"Uejpkvvtgign"ugv|v"ukej"tgmwtukx"fwtej"fkg"Wpvgttgikqpgp"hqtv0"Ukg"n uuv"ukej"fcjgt"cnu"
Tgmwttgp|hqtogn"uejtgkdgp<
S*p+"?
Q*3+."
"hcnnu"p"?"3
}"
"" 4"-"4S*p16+."uqpuv
Kp"iguejnquugpgt"Hqto"iguejtkgdgp<
4
nqi6*p+
"-"4"nqi6*p+"-"4
nqi6*p+
Q*3+
Fkgug"Hqtogn"n uuv"ukej"cwà" ugp"|w"Q*p+"?"Áp0"Fkg"icp|g"⁄dgtngiwpi"iknv"cpcnqi"h¯t"fkg"jqtk|qpvcngp"Uvtgemgp."uq"
fcuu"ykt"cwh "kpuigucov"6"Q*Áp+"iguejpkvvgpg"Tgikqpgp"mqoogp0"Fcu"dgfgwvgv"h¯t"fkg"Dgtgkejuuwejg."fcuu"6Q*Áp+"
Mpqvgp"igrt¯hv"wpf"m"Rwpmvg"|wt¯emigigdgp"ygtfgp"o¯uugp0"Ykt"gtjcnvgp"6Q*Áp"-"m+"Uejtkvvg0"Fkg"GhÞ"|kgp|"fgt"
Dgtgkejuuwejg"nkgiv"cnuq"kp"Q*Áp"-"m+0
Cpcn{ukgtv"ocp"fkg"Dgtgkejuuwejg"h¯t"dgnkgdkig"Fkogpukqpgp."gtj nv"ocp"gkpg"cnnigogkpgtg"Hqtogn0"H¯t"dgnkgdkig"
Fkogpukqp"f"kuv"fkg"Dgtgkejuuwejg"cwu"Q*p3/31f"-"m+0
80"Xgtingkej"okv"cpfgtgp"Fcvgpuvtwmvwtgp
Ykg" dgtgkvu" iguciv." gu" ikdv" ogkuvgpu" pkejv" fkg" Gkpg." dguvg" N uwpi0" Lgfgu" Rtqdngo" uvgnnv" cpfgtg" Cphqtfgtwpigp"
cp"fgp"N uwpiuygi0"H¯t"ocpejg"Rtqdngog"kuv"fgt"gkpg"Cpucv|"dguugt"iggkipgv."h¯t"cpfgtg"Rtqdngog"fgt"cpfgtg"
Cpucv|0"Fcjgt"kuv"gu"ykejvki."xgtuejkgfgpg"Cpu v|g"|wt"N uwpi"gkpgu"Rtqdngou"|w"dgvtcejvgp"wpf"|w"xgtingkejgp0"
Pwt"uq"ukgjv"ocp"fkg"Uv tmgp"wpf"Uejy ejgp"lgfgu"gkp|gnpgp0"Cp"fkgugt"Uvgnng"urkgnv"pcv¯tnkej"fkg"GhÞ"|kgp|cpcn{ug"
gkpg"icp|"gpvuejgkfgpfg"Tqnng."fgpp"ukg"ikdv"wpu"fkg"Swcnkv vgp"gkpgu"Cniqtkvjowu"kp"¥cjngp"|wt¯em0"Uqokv"ncuugp"
ukej"fkg"gkp|gnpgp"Cniqtkvjogp"lgfgt"Fcvgpuvtwmvwt"pgdgpgkpcpfgt"uvgnngp"wpf"xgtingkejgp0
/"33"/
Pgdgp"fgo"MF/Dcwo"uqnngp"jkgt"pqej"|ygk"ygkvgtg"Dcwouvtwmvwtgp"dgvtcejvgv"ygtfgp0"Fkgu"ukpf"|wo"gkpgp"
fgt"Swcfdcwo"wpf"|wo"cpfgtgp"fgt"Dgtgkejudcwo0"Ykg"fkg"Pcogp"xgtowvgp"ncuugp."jcpfgnv"gu"ukej"dgk"dgkfgp"
wo"Dcwouvtwmvwtgp0"Dgkfg"qrgtkgtgp"cwh "Rwpmvogpigp0"Kjtg"Mqpuvtwmvkqpuygkug."GhÞ"|kgp|."Xqt/"wpf"Pcejvgkng""
igigp¯dgt"fgo"MF/Dcwo"uqnngp"jkgt"mwt|"wouejtkgdgp"ygtfgp0
Dgvtcejvgp" ykt" |wp ejuv" fgp" Swcfdcwo0" Ugkpg" Mqpuvtwmvkqpuygkug" jcv" gpvhgtpv" jpnkejmgkv" okv" fgt" fgu" MF/
Dcwou0" Wo" gkpg" igigdgpg" Rwpmvogpig" ngiv" ocp" |wp ejuv" gkp" Swcftcv." co" dguvgp" okv" gkpgt" ¥ygkgtrqvgp|"
cnu"Ugkvgpn pigp0"Fcu"mcpp"pcv¯tnkej"fc|w"h¯jtgp."fcuu"fcu"Swcftcv"gkp"Uv¯em"it ̌gt"yktf."cnu"fkg"vcvu ejnkejg"
Cwufgjpwpi"fgt"Rwpmvogpig."gu"n uuv"ukej"ur vgt"cdgt"dguugt"wpvgtvgkngp0"Fkg"Cwufgjpwpi"fgu"Swcftcvu"yktf"
ko"Ywt|gnmpqvgp"fgu"Swcfdcwou"igurgkejgtv0"Pwp"yktf"fcu"Swcftcv"jqtk|qpvcn"wpf"xgtvkmcn"okvvki""igvgknv."cnuq"
igxkgtvgnv0"Fcpp"rt¯hv"ocp"fkg"gpvuvcpfgpgp"Xkgtvgnswcftcvg"cwh "fkg"gpvjcnvgpg"Rwpmv|cjn0"Kuv"pwt"pqej"gkp"Rwpmv"
gpvjcnvgp."uq"yktf"fgt"Cniqtkvjowu"h¯t"fkgugu"Swcftcv"dggpfgv."uqpuv"yktf"fcu"Swcftcv"gdgphcnnu"igxkgtvgnv0"H¯t"
lgfgu"Xkgtvgnswcftcv"yktf"gkp"Mpqvgp."qfgt"Dncvv."ygpp"gu"pwt"gkpgp"Rwpmv"gpvj nv."cp"fgp"Ywt|gnmpqvgp"igj piv0"
Cwh "fkgug"Ygkug"xgth jtv"ocp"ygkvgt0"Fkg"Swcftcvg"ygtfgp"uqncpig"igxkgtvgnv."dku"cnng"Rwpmv"kp"gkpgo"gkigpgp"
Swcftcv"nkgigp0"Fgt"gpvuvcpfgpg"Dcwo"jcv"cp"lgfgo"Mpqvgp"xkgt"Mkpfgt."fcjgt"fgt"Pcog"Swcfdcwo0
Cdd0;<"Mqpuvtwmvkqp"gkpgu"Swcfdcwou"cwh "gkpgt"Rwpmvogpig"okv"J whwpiurwpmv0"Fgt"Swcfdcwo"kuv"gpvctvgv0
Kp"fgt"ItcÞ"m"gtmgppv"ocp"|wo"gkpgp"fkg"Mqpuvtwmvkqpuygkug"fgu"Swcfdcwou."|wo"cpfgtgp"cwej"ugkp"itq̌gu"
Rtqdngo<" Fc" fkg" Rwpmvogpig" pkejv" cpjcpf" fgt" Rwpmvgxgtvgknwpi." uqpfgtp" gkphcej" koogt" okvvki" igvgknv" yktf."
gpvctvgv"fgt"Swcfdcwo"dgk"Rwpmvogpigp"fkg"J whwpigp"cwhygkugp0"DgÞ"pfgp"ukej"cp"gkpgt"Uvgnng"dguqpfgtu"xkgng"
Rwpmvg"cwh "gpigo"Tcwo."owuu"jkgt"ugjt"qhv"igxkgtvgnv"ygtfgp."dku"cnng"Rwpmvg"wpvgtigdtcejv"ukpf0"Cp"cpfgtgp"
Uvgnngp"owuu"ygpkigt"qhv"igxkgtvgnv"ygtfgp0"Fgt"Vgkndcwo."fgt"fgo"Swcftcv"okv"fgp"xkgngp"Rwpmvgp"gpvurtkejv."
y ejuv" fcjgt" igigp¯dgt" fgp" cpfgtgp" Vgknd wogp" ugjt" uvctm" cp0" Fwtej" fkg" Gpvctvwpi" xgtuejngejvgtv" ukej" fkg"
GhÞ"|kgp|"fgu"Swcfdcwou"gpvurtgejgpf0
/"34"/
Gkp"Dgtgkejudcwo"dguvgjv"cwu"gkpgo"dcncpekgtvgp."uqtvkgtvgp"Dkp tdcwo."fgt"fkg"Z/Mqqtfkpcvgp"fgt"Rwpmvg"kp"
fgt"igigdgpgp"Rwpmvogpig"gpvj nv0"Cp"lgfgo"Mpqvgp"fkgugu"Dcwou"j piv"gkp"dgkigqtfpgvgt"Dcwo."kp"fgo"fkg"
|wigj tkigp"[/Mqqtfkpcvgp"igurgkejgtv"ygtfgp0"Fkgug"D wog"ukpf"gdgphcnn"dcncpekgtvg."uqtvkgtvg"Dkp td wog0"Ukg"
gpvjcnvgp"pkejv"pwt"fkg"[/Mqqtfkpcvgp."uqpfgtp"fkg"icp|gp"Rwpmvg0"Fgt"gkpgo"Mpqvgp"ko"Z/Dcwo"dgkigqtfpgvg"
[/Dcwo" gpvj nv" fkg" ingkejgp" Rwpmvg." fkg" wpvgt" fgo" Mpqvgp" ko" Z/Dcwo" nkgigp." cnngtfkpiu" kp" gkpgt" cpfgtgp"
Uqtvkgtwpi."p onkej"gpvncpi"fgt"[/Mqqtfkpcvg0"Fwtej"fkgug"Mqpuvtwmvkqp"yktf"fkg"¥gkvghÞ"|kgp|"fgt"Dgtgkejuuwejg"
igigp¯dgt" fgo" MF/Dcwo" pqej" xgtdguugtv0" Ocp" uwejv" |wp ejuv" ko" Z/Dcwo" fgp" igigdgpgp" Z/Dgtgkej0" Pwp"
dtcwejv"ocp"pwt"pqej"fkg"fgp"ighwpfgpgp"Z/Mpqvgp"dgkigqtfpgvgp"[/D wog"|w"fwtejuwejgp0"Uqokv"urctv"ocp"
ukej"gkpkig"Ctdgkv0"Fkgug"Xgtdguugtwpi"igjv"cnngtfkpiu"|w"Ncuvgp"fgt"UrgkejgtghÞ"|kgp|."fc"pwp"pkejv"pwt"gkp"Dcwo"
igurgkejgtv"ygtfgp"owuu."uqpfgtp"|wu v|nkej"lgfgt"Vgkndcwo"fqrrgnv"xqtmqoov0"Fwtej"gkpg"ygkvgtg"Vgejpkm"n uuv"
ukej"fkg"¥gkvghÞ"|kgp|"fgt"Dgtgkejuuwejg"uqict"pqej"ygkvgt"xgtdguugtp0
Gu" hqniv" pwp" gkp" ⁄dgtdnkem" fgt" GhÞ"|kgp|gp" fgt" dguejtkgdgpgp" D wog0" Fc" fgt" Swcfvtgg" pkejv" gzrnk|kv" h¯t" fkg"
Dgtgkejuuwejg"iggkipgv"kuv."uqpfgtp"gjgt"cpfgtg"Cniqtkvjogp"wpvgtuv¯v|v."kuv"fkg"GhÞ"|kgp|"fgt"Dgtgkejuuwejg"pwt"
h¯t"MF/Dcwo"wpf"Dgtgkejudcwo"cwhignkuvgv0
Swcfdcwo
MF/Dcwo
Dgtgkejudcwo
Urgkejgtxgtdtcwej
Q**v"-"3+"p+
Q*p+
Q*p"nqifko/3"p+
Mqpuvtwmvkqpu|gkv
Q**v"-"3+"p+
Q*p"nqi"p+
Q*p"nqifko/3"p+
Dgtgkejuuwejg
Q*p3/31fko"-"m+
Q*nqifko/3"p"-"m+
90"Cpygpfwpigp
MF/D wog"ukpf"h¯t"fkg"Dgtgkejuuwejg"iwv"iggkipgv0"Cnuq"h¯t"fkg"Dgcpvyqtvwpi"fgt"Htcig"äYgnejg"Rwpmvg"nkgigp"
kp"gkpgo"igigdgpgp"Dgtgkej"*Tgejvgem."Swcfgt="000+AÑ0"Gkp"ykejvkigu"Cpygpfwpiuigdkgv"ukpf"fcjgt"Fcvgpdcpmgp0"
Fgpp"fkg"Fcvgpu v|g"okv"lgygknu"z"Hgnfgtp."fkg"kp"fgt"Fcvgpdcpm"cdigngiv"ygtfgp."ncuugp"ukej"cnu"Rwpmvg"kp"gkpgo"
z/fkogpukqpcngp" Tcwo" kpvgtrtgvkgtgp0" Fcokv" yktf" fkg" Fcvgpdcpm" |w" gkpgt" itq̌gp" Rwpmvogpig." cwu" fgt" ukej"
gkp"MF/Dcwo" gt|gwigp"n uuv0" Cpigpqoogp." kp"fgt"Fcvgpdcpm" ukpf"Okvctdgkvgtfcvgp" igurgkejgtv0"Gkpg" Urcnvg"
gpvj nv"fcu"Igjcnv."gkpg"cpfgtg"fcu"Cnvgt."gkpg"ftkvvg"fcu"Gkpuvgnnwpiufcvwo0"Dknfgv"ocp"fkgug"ftgk"Urcnvgp"cwh "fkg"
/"35"/
Fkogpukqpucejugp"fgu"ftgkfkogpukqpcngp"Tcwou"cd."uq"ncuugp"ukej"cnng"Okvctdgkvgtfcvgpu v|g"cnu"Rwpmvg"kp"fgp"
Tcwo"gkpqtfpgp0"Pwp"mcpp"gkp"ftgkfkogpukqpcngt"MF/Dcwo"gt|gwiv"ygtfgp."¯dgt"fgp"ocp"fcpp"Dgtgkejuuwejgp"
kp"fgt"Fcvgpdcpm"cwuh¯jtgp"mcpp0"Gvyc"gkpg"Uwejg"pcej"cnngp"Okvctdgkvgtp"|ykuejgp"52"wpf"62"Lcjtgp."fkg"xqp"
5222"dku"7222"Gwtq"xgtfkgpgp"wpf"|ykuejgp"3;;2"wpf"3;;7"gkpiguvgnnv"ywtfgp0"Pcv¯tnkej"ncuugp"ukej"MF/D wog"
cwej" kp" cpfgtgp" Dgtgkej" gkpugv|gp0" Gvyc" kp" fgt" EqorwvgtitcÞ"m0" Fgpp" cwej" jkgt" mqoogp" Rwpmvogpigp" wpf"
Dgtgkejuuwejgp"xqt0
:0"Hc|kv
MF/D wog"ukpf"pcv¯tnkej"iwv"iggkipgv."ygpp"ocp"cp"gkpg"Rwpmvogpig"fkg"Htcig"uvgnngp"yknn<"äYgnejg"Rwpmvg"
nkgigp"kp"gkpgo"dguvkoovgp"DgtgkejAÑ0"Fkgug"Htcig"m ppgp"ukg"ogkuvgpu"tgejv"uejpgnn"dgcpvyqtvgp0"Pqej"uejpgnngt"
m ppgp"fkgug"Htcig"cnngtfkpiu"fkg"Dgtgkejud wog"dgcpvyqtvgp0"Kjt"Pcejvgkn"kuv."fcuu"ukg"fch¯t"ogjt"Urgkejgtrncv|"
xgtdtcwejgp."cnu"fkg"MF/D wog0"Fc"kp"fgt"jgwvkigp"¥gkv"Urgkejgtrncv|"tgejv"dknnki"igyqtfgp"kuv."¥gkv"cdgt"pcej"
ykg"xqt"gkpg"itq̌g"Tqnng"urkgnv."yktf"ocp"yqjn"ogkuvgpu"fgp"Dgtgkejud wogp"fgp"Xqt|wi"igdgp0"MF/D wog"
f¯thvgp" cdgt" cwej" gvycu" gkphcejgt" |w" korngogpvkgtgp" ugkp0" Urkgnv" fkg" Cwuh¯jtwpiuiguejykpfkimgkv" gkpg" gjgt"
wpvgtigqtfpgvg"Tqnng."fkg"Gpvykemnwpiu|gkv"cdgt"gkpg"itq̌g."uqnnvg"ocp"xkgnngkejv"fqej"MF/D wog"dgxqt|wigp0
;0"Nkvgtcvwt
"""Fg"Dgti."xcp"Mtghgnf."Qxgtoctu."Uejyct|mqrh<"Eqorwvcvkqpcn"Igqogvt{."Urtkpigt"
V
"""Ugfigykem<"Cniqtkvjogp."Cffkuqp/Ygung{"
V
"""Rtgrctcvc."Ujcoqu<"Eqorwvcvkqpcn"Igqogvt{."Urtkpigt"
V
/"36"/
Universität Bielefeld
Polygone II: Triangulation
------------------------------------------------------
Ausarbeitung
im Rahmen des Seminars Algorithmische Geometrie
von Marion Zysik
Bielefeld, den 20.09.2003
1
1
1.1
Was ist Triangulation?
Kurze Erläuterung zur Triangulation
Unter Triangulation versteht man im Allgemeinen und anschaulich die Zerlegung eines Polygons P, durch eine maximale Menge von sich nicht schneidenden Diagonalen, in Dreiecke.
Verwendung findet dieses Verfahren unter anderem in der Robotik - bei der Bewegungsplanung von Robotern -, in der Bilderkennung, in der Standortplanung
und zur Bewachung einer Gallerie, wobei diese Anwendung später noch genauer
untersucht werden soll.
1.2
Grundlegendes
1. Wie im folgenden Beispiel an einem simplen Polygon zu sehen, ist jede
Triangulation ein Unikat, das heißt, dass ein Polygon auf verschiedene Arten
trianguliert werden kann.
...................................................
...
.............
.
.............
..
.
.
.
.
.
.
...
.... .. ... ...... .. ....
.
.
.
.
.
.
.
.
.
.
.
.
..
............... ...... ....................... ... ...... ......
.. ...................... ... ..........................................
..
.
.. ............
.. ...... ...... .... ...
..... ... ..
.. ....
..... .. .
...
..... ... ..
.......
..................................................
..
.... ......
..... .....
.
.
..
.
.
.
.
.
...
...
............... ... .....
.
.
.
.
.
.
.
.
.
.
.
.
.. .
.
..
........ ... ..... ........................................ ...... ......
.. .. .............................................................................................................
.. .. ...........
..
.. ........ ......
..
.....
.
..........
..... ..
...
..... ..
......
2. Bei einer Triangulation sollte immer die maximale Menge an Diagonalen erreicht werden.
Die folgende Grafik zeigt ein Dreieck mit drei aufeinanderfolgenden kollinearen
Knoten, dieses wird auch als entartetes Viereck bezeichnet.
2
Die Kanten von
simplen Polygonen
kreuzen sich nicht,
sie enthalten also
keine Löcher
Die Triangulation muss hier also noch vervollständigt werden, was durch die
gestrichelte Linie angedeutet wird.
2
Triangulationsverfahren
2.1
Konvexe Polygone
1.Verfahren:
Bei diesem Verfahren der Zerlegung von konvexen Polygonen in Dreiecke, wird
zunächst der linkeste Knoten ausfindig gemacht (hier ν). Existieren mehrere
Knoten mit denselben x-Koordinaten, so wählt man den Untersten, also den
mit dem kleinsten y-Wert. Von diesem Koten werden nun die Nachbarn gesucht
(hier w und u) und zwischen diesen eine Strecke gezogen. Wird die Strecke von
keinen weiteren Kanten geschnitten, so hat man eine Diagonale gefunden und
das entstandene Dreieck kann abgetrennt werden.
.......
....... ......
.
.
.
.
.
....
...
......
...
w....•.....
...
.
.
...
.
.
.
.. ..
.
.
.
..
.
.
.
.
.
..
..
ν •..........
.
....... .
..
....... .
.
.
.........
........................................
u•
Dieses Verfahren wird solange angewandt, bis der trivialste Fall, nämlich ein
Dreieck entsteht. Geschieht dies, ist die Triangulation komplett.
....
..........
...... . ...
...... .. .....
......
...
..
........
...
...
...
.
...
...
...
...
..
... ..
..
.
.
.
... .
.
.
.
... .
....
...
.............................
.
.......
... ....
... .....
...
..
.
...
...
....
...
.......
..
.
. ..
..
...... ...
.
.. ......
..
.
.
....
...
.................................
3
..
.......
...... ..
...... ..
..... ....
.
.
.
.
.
...
...
......
.................................
2.Verfahren:
Ein weiteres Verfahren für konvexe Polygone besteht darin, irgendeinen Knoten
der Menge auszuwählen und diesen dann mit allen anderen Knoten außer den
beiden Nachbarknoten und sich selbst zu verbinden.
2.2
Konkave Polygone
Das Verfahren zur Triangulation konkaver Polygone ähnelt zunächst dem der
konvexen im ersten Verfahren. So besteht auch hier der erste Schritt darin,
den linkesten Knoten und dessen Nachbarn zu bestimmen. Wiederum werden die beiden Nachbarn durch eine Strecke verbunden. Hier jedoch kann es bei
konkaven Polygonen vorkommen, dass die Strecke von Kanten geschnitten wird.
w..•..........................................
.....
..
..... ...
..
. ..........................
....
...... .........
..
....................................................... ............
.
.
.
.
.
.......
ν • ...... • ..
.........ν 0
.......
......... .. .......
.......
......... .. ... .....
......
...•... u ....
..... .............
..........
In diesem Fall wird deshalb noch zusätzlich der linkeste Knoten gesucht, der am
weitesten von der geschnittenen Strecke entfernt liegt (hier ν 0 ). Zwischen diesem
Knoten und dem linkesten des Polygons wird nun ebenfalls eine Strecke gezogen. Nach Voraussetzung kann diese Strecke nicht von einer Kante geschnitten
werden. Da es keinen Knoten geben darf, der weiter von der Strecke zwischen u
und w entfernt liegt. Eine Kante, die diese Strecke schneidet, hätte ihren Endpunkt im Polygon, so dass dieser Punkt noch weiter von der Strecke entfernt
liegen müsste, was jedoch ein Widerspruch wäre.
Die Strecke νν 0 teilt das Polygon nun in zwei Subpolygone P1 und P2 .
4
...........................................
...
...
..... P1
........
.
.
.
.
.
.
.
.
.
.
.
.
.
...........
....
.....
.
...
.
.
.
.
..........................
.........................
.
.
.
.
.
.
.
.
.
.
.
.
.......
..................................
.......
.........
.......
......... P2 .......
.......
......... ..... .....
...
.
.....
.....
..... .............
.......
Bei den entstandenen Polygonen kann dieses Verfahren wiederum angewandt
werden, bis auch hier nur noch ein Dreieck zurück bleibt und die Triangulation
abgeschlossen ist.
2.3
2.3.1
Effizienz
Konkave Polygone
Der Algorithmus zur Triangulation konkaver Polygone lässt sich grob in drei
Teilbereiche gliedern:
1. Eine Diagonale finden:
Dieses benötigt lineare Zeit.
2. Das Polygon in Sybpolygone teilen
3. und die Subpolygone rekursiv triangulieren
Wird das Polygon bei der Teilung in ein Dreieck und ein Polygon mit n-1
Ecken geteilt, so kann der Algorithmus im schlimmsten Fall quadratische
Zeit benötigen.
2.3.2
Konvexe Polygone
Die Triangulation von konvexen Polygonen im zweiten Verfahren benötigt nur
lineare Zeit. Jedoch sollte dieses nicht dazu verführen, ein konkaves Polygon
in ein konvexes umzuwandeln, da dieses ebenso aufwendig ist, wie die sofortige
Zerlegung.
5
2.4
Trapezzerlegung und Triangulation monotoner
Polygone
2.4.1
Monotone Polygone
Ein effizienteres Verfahren bietet das der Triangulation von monotonen Polygonen. Deshalb wird im weiteren die Zerlegung konvexer Polygone in monotone
vorgestellt. Zunächst jedoch wird die Frage zu klären sein:
Was sind monotone Polygone?
Die untere Abbildung zeigt ein y-monotones Polygon. Y-monoton bedeutet,
dass es eine Gerade gibt (hier die y − Achse), so dass jede Senkrechte zu dieser
Geraden das Polygon in höchstens zwei Punkten schneidet. Ein Schnitt sollte
also ein Punkt, ein Liniensegment oder leer sein.
..
. ..........
.......... ..............
............ .....
.
... ..
...
.
.
.
..
.. ..
....................................................................................
...
...
...
...
..
....
.
...
.
.
.
...
.. ......
...
...
....
...
.
....................... ......
... ...
y....− Achse
2.4.2
Trapezzerlegung
Eine effiziente Methode um aus einem konvexen ein monotones Polygon zu erstellen, ist die Trapezzerlegung. Hierbei gehen zuerst einmal von jedem Knoten
des Polygons horizontale Strahlen aus, die, sobald sie auf eine Kante treffen,
enden.
Haben zwei oder mehrere Knoten dieselbe y-Koordinate, so wird das Polygon
ein wenig gedreht, bis dieses nicht mehr der Fall ist.
...................................................................................................................................................................................................
....
......................................
..................
.....................................................................................................
.....
.....
..
..............................................................................
....
........
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.......
..
..
..
...............................................................................................................................................................................................................................................................................................
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.....
.........................................................
........................................................................................................................................................................
...................................................................................................................................................................................................................
......
.....
..
......................................................................................................................................................................................................................................................................................................
..
..
..
.. ....
...
...
... ................................................................................................................................................
.
............................................................................................................................................................................
............................................................................
.
.. .. ..
............................
.....
......................................
... ..
... .
....
.........................................................................
...................................................................................................................................................................
6
Als nächstes werden die Teilstücke der Strahlen, die über den Rand des Polygons hinausragen abgeschnitten. Innerhalb des Polygons jedoch sind Trapeze
entstanden.
.
............
..... ..............
.
......................
.
.
.
.
.
.
.
..
............ ......
.. .......................................................................................
......
...........................................................................................................................................................................................................
.
.
.
.
..
....................................................................................................................................................
. ...........
..
............
.............................................................................................................................
......
.....
..
.................................................................................................................................................................................................................................................
.
..
.. .....
..
...
... ..........................................................................
...
.................
..
..
...........................................................................................
... .
... ..
....
.
In diesen Trapezen werden die sich diagonal gegenüberliegenden Knoten verbunden.
.........
..... ..............
...............
.
.
.
.
.
.
.
.
.
..
.............
....
........... .................................................................................................................................................
.....
....
.................................................................
.....
...........................
.....
.........
.....
.....
.....
.....
........................................................
.....
....
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.. ......................
......
............................................................................................................................................................................................................................
.........
.....
........................................................................................................................................................
.
.
.
.
.
.
.
.
.
...
.
.
...
......
.................................................................................................................................................................................................................................................................................................................
...
.
.
.
...
...
. .
... ... ......
...
.
.
.
...
.
......................................................................
.. .
.................
.
... .
............................................................................
................ ... ..
... .
... ..
....
Entfernt man nun die ursprünglichen horizontalen Strahlen, so zerteilen die
übrigbleibenden Geraden das Polygon in monotone Subpolygone.
..........
...............
..... ..............
.
.
.
.
.
.
.
.
............
......
............ .......... ...............................................
......
.
.............. ................
.
.
.
........
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.. ......................
............
.
.
.
.
.
.
.
.
.
.
................................................
.
..................... ......................
.
................
...
............ ...........
.
.
.
.
.
.
.
.
.
.
..
.
.
...
.....................................................................
.
............
.
..
.
...
...
.. .. .....
.
.
.
..
.
...
.. .
.................................
.
... .
... ............. ....
................ ... ..
... .
... ..
....
7
2.4.3
Triangulation monotoner Polygone
Bei der Zerlegung eines y-monotonen Polygons bearbeitet der Algorithmus die
Knoten in der Reihenfolge abnehmender y-Koordinaten. Die Abarbeitung der
Knoten erfolgt mit Hilfe eines Stacks, der am Anfang leer ist, später aber alle
Knoten enthält, von denen noch Diagonalen ausgehen können.
Das Polygon der folgenden Abbildung soll nun trianguliert werden.
u1
u2
u3
u4
u5
u6
u7
u8
u9
Bei dem Knoten mit der größten y-Koordinate wird also begonnen. Die ersten
beiden Knoten können, ohne ihnen Beachtung zu schenken, da sie ja schon durch
eine Kante miteinander verbunden sind, fürs erste auf dem Stack abgelegt werden. Bei der Betrachtung des dritten Knotens u3 stellt sich heraus, dass dieser
mit keinem bisher gefundenen Knoten durch eine Diagonale innerhalb des Polygons verbunden werden kann. Auch u3 wird auf den Stack abgelegt.
Stack
u
u1 u2
u1 u2 u3
u3
u4
8
Es
wird
dabei
ein
strikt
ymonotones Polygon
verwendet,
d.h. ein Polygon
ohne horizontale
Kanten
Auch u4 kann im Moment nicht weiter verwendet werden und landet auf
dem Stack. Trifft man hier jedoch auf den Knoten u5 , so stellt man fest, dass
es möglich ist, diesen mit u3 zu verbinden, dadurch wird u4 vom Polygon abgetrennt und aus dem Stack entfernt, da u5 mit keinem anderen Knoten verbunden
werden kann, wird er auf dem Stack abgelegt und man geht über zu u6 .
Stack
u
u1
u1
u1
u1
u1
u3
u4
u5
u5
u6
u2
u2
u2
u2
u2
u3
u3 u4
u3
u3 u5
u6 liegt auf der gegenüberliegenden Randhälfte und kann mit u2 , u3 , u4 und u5
verbunden werden. Danach werden alle Knoten, zu den keine weitere Diagonale
mehr gezogen werden kann, entfernt. Auf dem Stack zurück bleiben nur noch
u5 und u6 . Es kann mit u7 fortgefahren werden.
Stack
u
u1
u1
u1
u1
u1
u5
u3
u4
u5
u5
u6
u7
u2
u2
u2
u2
u2
u6
u3
u3 u4
u3
u3 u5
Untersucht man nach diesem Schema alle notwendigen Knoten, so bleibt zuletzt
wieder ein Dreieck übrig und die Triangulation ist abgeschlossen.
9
u1
u2
u3
u4
u5
u6
u7
u8
u9
2.4.4
Stack
u
u1
u1
u1
u1
u1
u5
u6
u6
u3
u4
u5
u5
u6
u7
u8
u8
u2
u2
u2
u2
u2
u6
u7
u3
u3 u4
u3
u3 u5
Algorithmus
Algorithmus TrianguliereMonotonesPolygon(P )
Input. Ein strikt y-monotones Polygon (P ), welches in einer doppelt verketteten
Kantenliste D gespeichert ist.
Output. Eine Triangulation von P , welche in einer doppelt verketteten Kantenliste D gespeichert ist.
1. Verschmelze die Ecken des linken Randstücks und die Ecken des rechten
Randstücks zu einer Sequenz, die nach abnehmender y-Koordinate sortiert
ist. Wenn zwei Ecken die gleichen y-Koordinaten besitzen, dann kommt
die linke zuerst. Sei u1 , ..., un die sortierte Sequenz.
2. Lege u1 und u2 auf dem Stack S ab.
3. for j ←− 3 to n − 1
4. do if uj und die Ecke oben auf dem Stack sind auf unterschiedlichen
Randstücken
5. then nimm alle Ecken vom Stack herunter.
6. Füge eine Diagonale von uj zu allen vom Stack heruntergenommenen
Ecken außer der letzten in D ein.
7. Lege uj − 1 und uj auf den Stack.
10
8. else nimm eine Ecke vom Stack herunter.
9. Nimm die restlichen Ecken solange vom Stack, wie es Diagonalen zwischen
ihnen und uj innerhalb von P gibt. Füge diese Diagonalen in D ein. Lege
die Ecke, die als letzte heruntergenommen wurde, wieder auf den Stack.
10. Lege uj auf den Stack.
11. Füge Diagonalen von un zu allen Ecken auf dem Stack (außer der ersten
und der letzten) an.
2.4.5
Effizienz
• Schritt 1 kostet O(n) Zeit
• Schritt 2 kostet O(1) Zeit
• Schritt 3 die for-Schleife wird n-3 mal durchlaufen, ein Durchlauf kann
O(n) Zeit benötigen
• Schritt 11 benötigt höchstens O(n) Zeit
Jedesmal, wenn die for-Schleife durchlaufen wird, können höchstens zwei Knoten
auf dem Stack abgelegt werden, zusammen mit Schritt 2 ist die Gesamtanzahl
also durch 2n-4 begrenzt. Da die Anzahl der Entfernungsoperationen nicht
höher ist, als die der Ablegeoperationen, kann der ganze Algorithmus in O(n)
Zeit durchlaufen werden. Der Speicherplatzbedarf beträgt ebenso O(n).
2.5
Das Wächterproblem
Bei dem Wächter- oder auch Art Gallery Problem geht es darum, eine Kunstgallerie möglichst lückenlos zu bewachen. Dieses wirft natürlich Fragen nach
der Anzahl der Kamaras bzw. Wächter und deren Plazierung auf.
Eine Lösung dieses Problems kann auch von der Triangulation geliefert werden.
Hierbei muss dennoch beachtet werden, dass dadurch zwar eine lückenlose Bewachung berechnet wird, was jedoch die Anzahl der Kamaras bzw. Wächter
betrifft ist diese Lösung nicht immer minimal.
Zunächst einmal nehme man an, man hätte den Grundriss einer ”rellativ” verwinkelte Kunstgallerie, wie sie auf der folgenden Abbildung zu sehen ist.
11
Nach genauerem Hinsehen bemerkt man, dass diese Kunstgallerie durch die Kamaras (um 360 ◦ schwenkbar ) nicht ganz optimal bewacht wird. Um dieses zu
ändern, wird die Gallerie zunächst trianguliert.
Würde man nun in jedes Dreieck eine Kamara setzen, so wäre das Ziel der kompletten Überwachung erreicht. Man sieht jedoch leicht ein, dass dieses einem
“overkill” gleichkommen würde. Demnach muss also noch eine andere Strategie gesucht werden. Zusätzlich zur Triangulation hilft hier die Tiefensucht in
Graphen.
Durch die Tiefensuche soll gezeigt werden, dass jedem Dreieck eine von drei
Farben (hier schwarz , weiß und grau) zugeordnet werden kann, dazu wird in
das Polygon ein Graph eingefügt.
12
Während man diesen Graph gemäß der Tiefensuche entlanggeht, fügt man in
jedes Dreieck die noch fehlende Farbe ein.
Es ergibt sich, dass wirklich jedem Dreieck alle drei Farben zugeordnet werden
können. Wählt man nun eine der Farben aus, die am seltensten vorkommen
und plaziert auf allen Knoten dieser Farbe eine Kamara, so ist die Gallerie
vollständig überwacht, da ja jedes Dreieck diese Farbe besitzt. Die Anzahl der
Kamaras reduziert sich dadurch im schlimmsten Fall auf n3 , wobei n die Anzahl
aller Knoten ist.
13
2.6
Literaturangaben
M.de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf
Computational Geometry: Algorithms and Applications
Seite 45 - 59
2. Auflage, Springer, 2000
Martin Aigner, Günter Ziegler
Proofs from the Book
Seite 179 - 181
2. Auflage, Springer, 2001
Steffen Bunzel, Jörg Finger
Polygon Triangulation
Internet: http://ad.informatik.uni-freiburg.de/lehre/ws9798/geometrischealgorithmen/termine/index.html
Link: Triangulierung von Polygonen
Stand: 24.Oktober 1997
Raimund Seidel
A Simple and Fast Incremental Randomized Algorithm for Computing
Trapezoidal Decompositions and for Triangulating Polygons
Internet: http://citeseer.nj.nec.com/seidel91simple.html
Link: tcs.cs.unisb.de/papers/trap.ps.gz
Stand: 1991
Sébastien Loisel
Zed3D - A compact reference for 3d Computer graphics programming
Seite 91 - 93
1996
Klaus Hinrichs
4 Polygontriangulation: Wie bewacht man eine Kunstgalerie
Internet: http://wwwmath.uni-muenster.de/u/chr/Geometrie/
Folien/Kapitel04.pdf
Oder: http://wwwmath.uni-muenster.de/u/jacobm/Lehre/AlGeo/Vorlesung/
Link: Kapitel 04 4s.pdf
Seite 37 - 44
Stand: 24.Juli 2003
Adrian Polko
Die Berechnung der Triangulation eines Polygons in fast-linearer Zeit
Internet: http://web.informatik.unibonn.de/I/Lehre/Seminare/Geometrie0102/index.html
Link: Die Berechnung der Triangulations eines Polygons in fast-linearer Zeit
Stand: 27.11.2001
14