Start writing algorithm description
Implementation details still to be written.
|
@ -0,0 +1,831 @@
|
|||
# Implementation of Maximum Weighted Matching
|
||||
|
||||
|
||||
## Introduction
|
||||
|
||||
This document describes the implementation of an algorithm that computes a maximum weight matching
|
||||
in a general graph in time _O(n<sup>3</sup>)_, where _n_ is the number of vertices in the graph.
|
||||
|
||||
In graph theory, a _matching_ is a subset of edges such that none of them share a common vertex.
|
||||
|
||||
A _maximum cardinality matching_ is a matching that contains the largest possible number of edges
|
||||
(or equivalently, the largest possible number of vertices).
|
||||
|
||||
For a graph that has weights attached to its edges, a _maximum weight matching_
|
||||
is a matching that achieves the largest possible sum of weights of matched edges.
|
||||
An algorithm for maximum weight matching can obviously also be used to calculate a maximum
|
||||
cardinality matching by simply assigning weight 1 to all edges.
|
||||
|
||||
Certain computer science problems can be understood as _restrictions_ of maximum weighted matching
|
||||
in general graphs.
|
||||
Examples are: maximum matching in bipartite graphs, maximum cardinality matching in general graphs,
|
||||
and maximum weighted matching in general graphs with edge weights limited to integers
|
||||
in a certain range.
|
||||
Clearly, an algorithm for maximum weighted matching in general graphs also solves
|
||||
all of these restricted problems.
|
||||
However, some of the restricted problems can be solved with algorithms that are simpler and/or
|
||||
faster than the known algorithms for the general problem.
|
||||
The rest of this document does not consider restricted problems.
|
||||
My focus is purely on maximum weighted matching in general graphs.
|
||||
|
||||
In this document, _n_ refers to the number of vertices and _m_ refers to the number of edges in the graph.
|
||||
|
||||
|
||||
## A timeline of matching algorithms
|
||||
|
||||
In 1963, Jack Edmonds published the first polynomial-time algorithm for maximum matching in
|
||||
general graphs [[1]](#edmonds1965a) [[2]](#edmonds1965b) .
|
||||
Efficient algorithms for bipartite graphs were already known at the time, but generalizations
|
||||
to non-bipartite graphs would tend to require an exponential number of steps.
|
||||
Edmonds solved this by explicitly detecting _blossoms_ (odd-length alternating cycles) and
|
||||
adding special treatment for them.
|
||||
He also introduced a linear programming technique to handle weighted matching.
|
||||
The resulting maximum weighted matching algorithm runs in time _O(n<sup>4</sup>)_.
|
||||
|
||||
In 1973, Harold N. Gabow published a maximum weighted matching algorithm that runs in
|
||||
time _O(n<sup>3</sup>)_ [[3]](#gabow1974) .
|
||||
It is based on the ideas of Edmonds, but uses different data structures to reduce the amount
|
||||
of work.
|
||||
|
||||
In 1983, Galil, Micali and Gabow published a maximum weighted matching algorithm that runs in
|
||||
time _O(n\*m\*log(n))_ [[4]](#galil_micali_gabow1986) .
|
||||
It is an implementation of Edmonds' blossom algorithm that uses advanced data structures
|
||||
to speed up critical parts of the algorithm.
|
||||
This algorithm is asymptotically faster than _O(n<sup>3</sup>)_ for sparse graphs,
|
||||
but slower for highly dense graphs.
|
||||
|
||||
In 1983, Zvi Galil published an overview of algorithms for 4 variants of the matching problem
|
||||
[[5]](#galil1986) :
|
||||
maximum-cardinality resp. maximum-weight matching in bipartite resp. general graphs.
|
||||
I like this paper a lot.
|
||||
It explains the algorithms from first principles and can be understood without prior knowledge
|
||||
of the literature.
|
||||
The paper describes a maximum weighted matching algorithm that is similar to Edmonds'
|
||||
blossom algorithm, but carefully implemented to run in time _O(n<sup>3</sup>)_.
|
||||
It then sketches how advanced data structures can be added to arrive at the Galil-Micali-Gabow
|
||||
algorithm that runs in time _O(n\*m\*log(n))_.
|
||||
|
||||
In 1990, Gabow published a maximum weighted matching algorithm that runs in time
|
||||
_O(n\*m + n<sup>2</sup>\*log(n))_ [[6]](#gabow1990) .
|
||||
It uses several advanced data structures, including Fibonacci heaps.
|
||||
Unfortunately I don't understand this algorithm at all.
|
||||
|
||||
|
||||
## Choosing an algorithm
|
||||
|
||||
I selected the _O(n<sup>3</sup>)_ variant of Edmonds' blossom algorithm as described by
|
||||
Galil [[5]](#galil1986) .
|
||||
This algorithm is usually credited to Gabow [[3]](#gabow1974), but I find the description
|
||||
in [[5]](#galil1986) easier to understand.
|
||||
|
||||
This is generally a fine algorithm.
|
||||
One of its strengths is that it is relatively easy to understand, especially compared
|
||||
to the more recent algorithms.
|
||||
Its run time is asymptotically optimal for complete graphs (graphs that have an edge
|
||||
between every pair of vertices).
|
||||
|
||||
On the other hand, the algorithm is suboptimal for sparse graphs.
|
||||
It is possible to construct highly sparse graphs, having _m = O(n)_,
|
||||
that cause this algorithm to perform _Θ(n<sup>3</sup>)_ steps.
|
||||
In such cases the Galil-Micali-Gabow algorithm would be significantly faster.
|
||||
|
||||
Then again, there is a question of how important the worst case is for practical applications.
|
||||
I suspect that the simple algorithm typically needs only about _O(n\*m)_ steps when running
|
||||
on random sparse graphs with random weights, i.e. much faster than its worst case bound.
|
||||
|
||||
After trading off these properties, I decided that I prefer an algorithm that is understandable
|
||||
and has decent performance, over an algorithm that is faster in specific cases but also
|
||||
significantly more complicated.
|
||||
|
||||
|
||||
## Description of the algorithm
|
||||
|
||||
My implementation closely follows the description by Zvi Galil in [[5]](#galil1986) .
|
||||
I recommend to read that paper before diving into my description below.
|
||||
The paper explains the algorithm in depth and shows how it relates to matching
|
||||
in bipartite graphs and non-weighted graphs.
|
||||
|
||||
There are subtle aspects to the algorithm that are tricky to implement correctly but are
|
||||
mentioned only briefly in the paper.
|
||||
In this section, I describe the algorithm from my own perspective:
|
||||
a programmer struggling to implement the algorithm correctly.
|
||||
|
||||
My goal is only to describe the algorithm, not to prove its correctness.
|
||||
|
||||
### Basic concepts
|
||||
|
||||
An edge-weighted, undirected graph _G_ consists of a set _V_ of _n_ vertices and a set _E_
|
||||
of _m_ edges.
|
||||
|
||||
Vertices are represented by non-negative integers from _0_ to _n-1_: _V = { 0, 1, ..., n-1 }_
|
||||
|
||||
Edges are represented by tuples: _E = { (x, y, w), ... }_ <br>
|
||||
where the edge _(x, y, w)_ is incident on vertices _x_ and _y_ and has weight _w_. <br>
|
||||
The order of vertices is irrelevant, i.e. _(x, y, w)_ and _(y, x, w)_ represent the same edge. <br>
|
||||
Edge weights may be integers or floating point numbers. <br>
|
||||
There can be at most one edge between any pair of vertices. <br>
|
||||
A vertex can not have an edge to itself.
|
||||
|
||||
A matching is a subset of edges without any pair of edges sharing a common vertex. <br>
|
||||
An edge is matched if it is part of the matching, otherwise it is unmatched. <br>
|
||||
A vertex is matched if it is incident to an edge in the matching, otherwise it is unmatched.
|
||||
|
||||
An alternating path is a simple path that alternates between matched and unmatched edges.
|
||||
|
||||
![Figure 1](doc/figures/graph1.png)
|
||||
*Figure 1*
|
||||
|
||||
Figure 1 depicts a graph with 6 vertices and 9 edges.
|
||||
Wavy lines represent matched edges; straight lines represent edges that are currently unmatched.
|
||||
The matching has weight 8 + 7 = 15.
|
||||
An example of an alternating path would be 0 - 1 - 4 - 5 - 3 (but there are many others).
|
||||
|
||||
### Augmenting paths
|
||||
|
||||
An augmenting path is an alternating path that begins and ends in two unmatched vertices.
|
||||
|
||||
An augmenting path can be used to extend the matching as follows:
|
||||
remove all matched edges on the augmenting path from the matching,
|
||||
and add all previously unmatched edges on the augmenting path to the matching.
|
||||
The result is again a valid matching, and the number of matched edges has increased by one.
|
||||
|
||||
The matching in figure 1 above has several augmenting paths.
|
||||
For example, the edge from vertex 0 to vertex 2 is by itself an augmenting path.
|
||||
Augmenting along this path would increase the weight of the matching by 2.
|
||||
Another augmenting path is 0 - 1 - 4 - 5 - 3 - 2, which would increase the weight of
|
||||
the matching by 3.
|
||||
Finally, 0 - 4 - 1 - 2 is also an augmenting path, but it would decrease the weight
|
||||
of the matching by 2.
|
||||
|
||||
### Main algorithm
|
||||
|
||||
Our algorithm to compute a maximum weighted matching is as follows:
|
||||
|
||||
- Start with an empty matching (all edges unmatched).
|
||||
- Repeat the following steps:
|
||||
- Find an augmenting path that provides the largest possible increase of the weight of
|
||||
the matching.
|
||||
- If there is no augmenting path that increases the weight of the matching,
|
||||
end the algorithm.
|
||||
The current matching is a maximum-weight matching.
|
||||
- Otherwise, use the augmenting path to update the matching.
|
||||
- Continue by searching for another augmenting path, etc.
|
||||
|
||||
This algorithm ends when there are no more augmenting paths that increase the weight
|
||||
of the matching.
|
||||
In some cases, there may still be augmenting paths which do not increase the weight of the matching,
|
||||
implying that the maximum-weight matching has fewer edges than the maximum cardinality matching.
|
||||
|
||||
Every iteration of the main loop is called a _stage_.
|
||||
Note that the final matching contains at most _n/2_ edges, therefore the algorithm
|
||||
performs at most _n/2_ stages.
|
||||
|
||||
The only remaining challenge is finding an augmenting path.
|
||||
Specifically, finding an augmenting path that increases the weight of the matching
|
||||
as much as possible.
|
||||
|
||||
### Blossoms
|
||||
|
||||
A blossom is an odd-length cycle that alternates between matched and unmatched edges.
|
||||
Such cycles complicate the search for augmenting paths.
|
||||
To overcome these problems, blossoms must be treated specially.
|
||||
The trick is to temporarily replace the vertices and edges that are part of the blossom
|
||||
by a single super-vertex.
|
||||
This is called _shrinking_ the blossom.
|
||||
The search for an augmenting path then continues in the modified graph in which
|
||||
the odd-length cycle no longer exists.
|
||||
It may later become necessary to _expand_ the blossom (undo the shrinking step).
|
||||
|
||||
For example, the cycle 0 - 1 - 4 - 0 in figure 1 above is an odd-length alternating cycle,
|
||||
and therefore a candidate to become a blossom.
|
||||
|
||||
In practice, we do not remove vertices or edges from the graph while shrinking a blossom.
|
||||
Instead the graph is left unchanged, but a separate data structure keeps track of blossoms
|
||||
and which vertices are contained in which blossoms.
|
||||
|
||||
A graph can contain many blossoms.
|
||||
Furthermore, after shrinking a blossom, that blossom can become a sub-blossom
|
||||
in a bigger blossom.
|
||||
Figure 2 depicts a graph with several nested blossoms.
|
||||
|
||||
![Figure 2](doc/figures/graph2.png) <br>
|
||||
*Figure 2: Nested blossoms*
|
||||
|
||||
To describe the algorithm unambiguously, we need precise definitions:
|
||||
|
||||
* A _blossom_ is either a single vertex, or an odd-length alternating cycle of _sub-blossoms_.
|
||||
* A _non-trivial blossom_ is a blossom that is not a single vertex.
|
||||
* A _top-level blossom_ is a blossom that is not contained inside another blossom.
|
||||
It can also be a single vertex which is not part of any blossom.
|
||||
* The _base vertex_ of a blossom is the only vertex in the blossom that is not matched
|
||||
to another vertex in the same blossom.
|
||||
The base vertex is either unmatched, or matched to a vertex outside the blossom.
|
||||
In a single-vertex blossom, its only vertex is the base vertex.
|
||||
In a non-trivial blossom, the base vertex is equal to the base vertex of the unique sub-blossom
|
||||
that begins and ends the alternating cycle.
|
||||
* The _parent_ of a non-top-level blossom is the directly enclosing blossom in which
|
||||
it occurs as a sub-blossom.
|
||||
Top-level blossoms do not have parents.
|
||||
|
||||
Non-trivial blossoms are created by shrinking and destroyed by expanding.
|
||||
These are explicit steps of the algorithm.
|
||||
This implies that _not_ every odd-length alternating cycle is a blossom.
|
||||
The algorithm decides which cycles are blossoms.
|
||||
|
||||
Just before a new blossom is created, its sub-blossoms are initially top-level blossoms.
|
||||
After creating the blossom, the sub-blossoms are no longer top-level blossoms because they are contained inside the new blossom, which is now a top-level blossom.
|
||||
|
||||
Every vertex is contained in precisely one top-level blossom.
|
||||
This may be either a trivial blossom which contains only that single vertex,
|
||||
or a non-trivial blossom into which the vertex has been absorbed through shrinking.
|
||||
A vertex may belong to different top-level blossoms over time as blossoms are
|
||||
created and destroyed by the algorithm.
|
||||
I use the notation _B(x)_ to indicate the top-level blossom that contains vertex _x_.
|
||||
|
||||
### Searching for an augmenting path
|
||||
|
||||
Recall that the matching algorithm repeatedly searches for an augmenting path that
|
||||
increases the weight of the matching as much as possible.
|
||||
I'm going to postpone the part that deals with "increasing the weight as much as possible".
|
||||
For now, all we need to know is this:
|
||||
At a given step in the algorithm, some edges in the graph are _tight_ while other edges
|
||||
have _slack_.
|
||||
An augmenting path that consists only of tight edges is _guaranteed_ to increase the weight
|
||||
of the matching as much as possible.
|
||||
|
||||
While searching for an augmenting path, we simply restrict the search to tight edges,
|
||||
ignoring all edges that have slack.
|
||||
Certain explicit actions of the algorithm cause edges to become tight or slack.
|
||||
How this works will be explained later.
|
||||
|
||||
To find an augmenting path, the algorithm searches for alternating paths that start
|
||||
in an unmatched vertex.
|
||||
The collection of alternating paths forms a forest of trees.
|
||||
Each tree is rooted in an unmatched vertex, and all paths from the root to the leaves of a tree
|
||||
are alternating paths.
|
||||
The nodes in these trees are top-level blossoms.
|
||||
|
||||
To facilitate the search, top-level blossoms are labeled as either _S_ or _T_ or _unlabeled_.
|
||||
Label S is assigned to the roots of the alternating trees, and to nodes at even distance
|
||||
from the root.
|
||||
Label T is assigned to nodes at odd distance from the root of an alternating tree.
|
||||
Unlabeled blossoms are not (yet) part of an alternating tree.
|
||||
(In some papers, the label S is called _outer_ and T is called _inner_.)
|
||||
|
||||
It is important to understand that labels S and T are assigned only to top-level blossoms,
|
||||
not to individual vertices.
|
||||
However, it is often relevant to know the label of the top-level blossom that contains
|
||||
a given vertex.
|
||||
I use the following terms for convenience:
|
||||
|
||||
* an _S-blossom_ is a top-level blossom with label S;
|
||||
* a _T-blossom_ is a top-level blossom with label T;
|
||||
* an _S-vertex_ is a vertex inside an S-blossom;
|
||||
* a _T-vertex_ is a vertex inside a T-blossom.
|
||||
|
||||
Edges that span between two S-blossoms are special.
|
||||
If both S-blossoms are part of the same alternating tree, the edge is part of
|
||||
an odd-length alternating cycle.
|
||||
The lowest common ancestor node in the alternating tree forms the beginning and end
|
||||
of the alternating cycle.
|
||||
In this case a new blossom must be created by shrinking the cycle.
|
||||
If the two S-blossoms are in different alternating trees, the edge that links the blossoms
|
||||
is part of an augmenting path between the roots of the two trees.
|
||||
|
||||
![Figure 3](doc/figures/graph3.png) <br>
|
||||
*Figure 3: Growing alternating trees*
|
||||
|
||||
The graph in figure 3 contains two unmatched vertices: 0 and 7.
|
||||
Both form the root of an alternating tree.
|
||||
Blue arrows indicate edges in the alternating trees, pointing away from the root.
|
||||
The graph edge between vertices 4 and 6 connects two S-blossoms in the same alternating tree.
|
||||
Scanning this edge will cause the creation of a new blossom with base vertex 2.
|
||||
The graph edge between vertices 6 and 9 connects two S-blossoms which are part
|
||||
of different alternating trees.
|
||||
Scanning this edge will discover an augmenting path between vertices 0 and 7.
|
||||
|
||||
Note that all vertices in the graph of figure 3 happen to be top-level blossoms.
|
||||
In general, the graph may already contain non-trivial blossoms.
|
||||
Alternating trees are constructed over top-level blossoms, not necessarily over
|
||||
individual vertices.
|
||||
|
||||
When a vertex becomes an S-vertex, it is added to a queue.
|
||||
The search procedure considers these vertices one-by-one and tries to use them to
|
||||
either grow the alternating tree (thus adding new vertices to the queue),
|
||||
or discover an augmenting path or a new blossom.
|
||||
|
||||
In detail, the search for an augmenting path proceeds as follows:
|
||||
|
||||
- Mark all top-level blossoms as _unlabeled_.
|
||||
- Initialize an empty queue _Q_.
|
||||
- Assign label S to all top-level blossoms that contain an unmatched vertex.
|
||||
Add all vertices inside such blossoms to _Q_.
|
||||
- Repeat until _Q_ is empty:
|
||||
- Take a vertex _x_ from _Q_.
|
||||
- Scan all _tight_ edges _(x, y, w)_ that are incident on vertex _x_.
|
||||
- Find the top-level blossom _B(x)_ that contains vertex _x_
|
||||
and the top-level blossom _B(y)_ that contains vertex _y_.
|
||||
- If _B(x)_ and _B(y)_ are the same blossom, ignore this edge.
|
||||
(It is an internal edge in the blossom.)
|
||||
- Otherwise, if blossom _B(y)_ is unlabeled, assign label T to it.
|
||||
The base vertex of _B(y)_ is matched (otherwise _B(y)_ would have label S).
|
||||
Find the vertex _t_ which is matched to the base vertex of _B(y)_ and find
|
||||
its top-level blossom _B(t)_ (this blossom is still unlabeled).
|
||||
Assign label S to blossom _B(t)_, and add all vertices inside _B(t)_ to _Q_.
|
||||
- Otherwise, if blossom _B(y)_ has label T, ignore this edge.
|
||||
- Otherwise, if blossom _B(y)_ has label S, there are two scenarios:
|
||||
- Either _B(x)_ and _B(y)_ are part of the same alternating tree.
|
||||
In that case, we have discovered an odd-length alternating cycle.
|
||||
Shrink the cycle into a blossom and assign label S to it.
|
||||
Add all vertices inside its T-labeled sub-blossoms to _Q_.
|
||||
(Vertices inside S-labeled sub-blossoms have already been added to _Q_
|
||||
and must not be added again.)
|
||||
Continue the search for an augmenting path.
|
||||
- Otherwise, if _B(x)_ and _B(y)_ are part of different alternating trees,
|
||||
we have found an augmenting path between the roots of those trees.
|
||||
End the search and return the augmenting path.
|
||||
- If _Q_ becomes empty before an augmenting path has been found,
|
||||
it means that no augmenting path exists (which consists of only tight edges).
|
||||
|
||||
For each top-level blossom, we keep track of its label as well as the edge through
|
||||
which it obtained its label (attaching it to the alternating tree).
|
||||
These edges are needed to trace back through the alternating tree to construct
|
||||
a blossom or an alternating path.
|
||||
|
||||
When an edge between S-blossoms is discovered, it is handled as follows:
|
||||
|
||||
- The two top-level blossoms are _B(x)_ and _B(y)_, both labeled S.
|
||||
- Trace up through the alternating trees from _B(x)_ and _B(y)_ towards the root.
|
||||
- If the blossoms are part of the same alternating tree, the tracing process
|
||||
eventually reaches a lowest common ancestor of _B(x)_ and _B(y)_.
|
||||
In that case a new blossom must be created.
|
||||
Its alternating cycle starts at the common ancestor, follows the path through
|
||||
the alternating tree down to _B(x)_, then via the scanned edge to _B(y)_,
|
||||
then through the alternating tree up to the common ancestor.
|
||||
(Note it is possible that either _B(x)_ or _B(y)_ is itself the lowest common ancestor.)
|
||||
- Otherwise, the blossoms are in different trees.
|
||||
The tracing process will eventually reach the roots of both trees.
|
||||
At that point we have traced out an augmenting path between the two roots.
|
||||
|
||||
Note that the matching algorithm uses two different types of tree data structures.
|
||||
These two types of trees are separate concepts.
|
||||
But since they are both trees, there is potential for accidentally confusing them.
|
||||
It may be helpful to explicitly distinguish the two types:
|
||||
|
||||
- A forest of _blossom structure trees_ represents the nested structure of blossoms.
|
||||
Every node in these trees is a blossom.
|
||||
The roots are the top-level blossoms.
|
||||
The leaf nodes are the single vertices.
|
||||
The child nodes of each non-leaf node represent its sub-blossoms.
|
||||
Every vertex is a leaf node in precisely one blossom structure tree.
|
||||
A blossom structure tree may consist of just one single node, representing
|
||||
a vertex that is not part of any non-trivial blossom.
|
||||
- A forest of _alternating trees_ represents an intermediate state during the search
|
||||
for an augmenting path.
|
||||
Every node in these trees is a top-level blossom.
|
||||
The roots are top-level blossoms with an unmatched base vertex.
|
||||
Every labeled top-level blossom is part of an alternating tree.
|
||||
Unlabeled blossoms are not (yet) part of a tree.
|
||||
|
||||
### Augmenting the matching
|
||||
|
||||
Once an augmenting path has been found, augmenting the matching is relatively easy.
|
||||
Simply follow the path, adding previously unmatched edges to the matching and removing
|
||||
previously matched edges from the matching.
|
||||
|
||||
A useful data structure to keep track of matched edges is an array `mate[x]` indexed by vertex.
|
||||
If vertex _x_ is matched, `mate[x]` contains the index of the vertex to which it is matched.
|
||||
If vertex _x_ is unmatched, `mate[x]` contains -1.
|
||||
|
||||
A slight complication arises when the augmenting path contains a non-trivial blossom.
|
||||
The search returns an augmenting path over top-level blossoms, without details
|
||||
about the layout of the path within blossoms.
|
||||
Any parts of the path that run through a blossom must be traced in order to update
|
||||
the matched/unmatched status of the edges in the blossom.
|
||||
|
||||
When an augmenting path runs through a blossom, it always runs between the base vertex of
|
||||
the blossom and some sub-blossom (potentially the same sub-blossom that contains the base vertex).
|
||||
If the base vertex is unmatched, it forms the start or end of the augmenting path.
|
||||
Otherwise, the augmenting path enters the blossom though the matched edge of the base vertex.
|
||||
From the opposite direction, the augmenting path enters the blossom through an unmatched edge.
|
||||
It follows that the augmenting path must run through an even number of internal edges
|
||||
of the blossom.
|
||||
Fortunately, every sub-blossom can be reached from the base through an even number of steps
|
||||
by walking around the blossom in the appropriate direction.
|
||||
|
||||
Augmenting along a path through a blossom causes a reorientation of the blossom.
|
||||
Afterwards, it is still a blossom and still consists of an odd-length alternating cycle,
|
||||
but the cycle begins and ends in a different sub-blossom.
|
||||
The blossom also has a different base vertex.
|
||||
(In specific cases where the augmenting path merely "grazes" a blossom,
|
||||
the orientation and base vertex remain unchanged.)
|
||||
|
||||
![Figure 4](doc/figures/graph4.png) <br>
|
||||
*Figure 4: Augmenting path through a blossom*
|
||||
|
||||
Figure 4 shows an augmenting path that runs through a blossom.
|
||||
The augmenting path runs through an even number of internal edges in the blossom,
|
||||
which in this case is not the shortest way around the blossom.
|
||||
After augmenting, the blossom has become reoriented:
|
||||
a different vertex became the base vertex.
|
||||
|
||||
In case of nested blossoms, non-trivial sub-blossoms on the augmenting path must
|
||||
be updated recursively.
|
||||
|
||||
Note that the process of repeatedly augmenting the matching will never cause a matched vertex
|
||||
to become unmatched.
|
||||
Once a vertex is matched, augmenting may cause the vertex to become matched to a _different_
|
||||
vertex, but it can not cause the vertex to become unmatched.
|
||||
|
||||
### Edge slack and dual variables
|
||||
|
||||
We still need a method to determine which edges are _tight_.
|
||||
This is done by means of so-called _dual variables_.
|
||||
|
||||
The purpose of dual variables can be explained by rephrasing the maximum matching problem
|
||||
as an instance of linear programming.
|
||||
I'm not going to do that here.
|
||||
I will describe how the algorithm uses dual variables without explaining why.
|
||||
For the mathematical background, I recommend reading [[5]](#galil1986) .
|
||||
|
||||
Every vertex _x_ has a dual variable _u<sub>x</sub>_.
|
||||
Furthermore, every non-trivial blossom _B_ has a dual variable _z<sub>B</sub>_.
|
||||
These variables contain non-negative numbers which change over time through actions
|
||||
of the algorithm.
|
||||
|
||||
Every edge in the graph imposes a constraint on the dual variables:
|
||||
The weight of the edge between vertices _x_ and _y_ must be less or equal
|
||||
to the sum of the dual variables _u<sub>x</sub>_ plus _u<sub>y</sub>_ plus all
|
||||
_z<sub>B</sub>_ of blossoms _B_ that contain the edge.
|
||||
(A blossom contains an edge if it contains both incident vertices.)
|
||||
This constraint is more clearly expressed in a formula:
|
||||
|
||||
$$ u_x + u_y + \sum_{(x,y) \in B} z_B \ge w_{x,y} $$
|
||||
|
||||
The slack _π<sub>x,y</sub>_ of the edge between vertices _x_ and _y_ is a non-negative number
|
||||
that indicates how much room is left before the edge constraint would be violated:
|
||||
|
||||
$$ \pi_{x,y} = u_x + u_y + \sum_{(x,y) \in B} z_B - w_{x,y} $$
|
||||
|
||||
An edge is _tight_ if and only if its slack is zero.
|
||||
Given the values of the dual variables, it is very easy to calculate the slack of an edge
|
||||
which is not contained in any blossom: simply add the duals of its incident vertices and
|
||||
subtract the weight.
|
||||
To check whether an edge is tight, simply compute its slack and check whether it is zero.
|
||||
|
||||
Calculating the slack of an edge that is contained in one or more blossoms is a little tricky,
|
||||
but fortunately we don't need such calculations.
|
||||
The search for augmenting paths only considers edges that span _between_ top-level blossoms,
|
||||
not edges that are contained inside blossoms.
|
||||
So we never need to check the tightness of internal edges in blossoms.
|
||||
|
||||
A matching has maximum weight if it satisfies all of the following constraints:
|
||||
|
||||
- All dual variables and edge slacks are non-negative:
|
||||
_u<sub>i</sub>_ ≥ 0 , _z<sub>B</sub>_ ≥ 0 , _π<sub>x,y</sub>_ ≥ 0
|
||||
- All matched edges have zero slack: edge _(x, y)_ matched implies _π<sub>x,y</sub>_ = 0
|
||||
- All unmatched vertices have dual variable zero: vertex _x_ unmatched implies _u<sub>x</sub>_ = 0
|
||||
|
||||
The first two constraints are satisfied at all times while the matching algorithm runs.
|
||||
When the algorithm updates dual variables, it ensures that dual variables and edge slacks
|
||||
remain non-negative.
|
||||
It also ensures that matched edges remain tight, and that edges which are part of the odd-length
|
||||
cycle in a blossom remain tight.
|
||||
When the algorithm augments the matching, it uses an augmenting path that consists of
|
||||
only tight edges, thus ensuring that newly matched edges have zero slack.
|
||||
|
||||
The third constraint is initially not satisfied.
|
||||
The algorithm makes progress towards satisfying this constraint in two ways:
|
||||
by augmenting the matching, thus reducing the number of unmatched vertices,
|
||||
and by reducing the value of the dual variables of unmatched vertices.
|
||||
Eventually, either all vertices are matched or all unmatched vertices have zero dual.
|
||||
At that point the maximum weight matching has been found.
|
||||
|
||||
When the matching algorithm is finished, the constraints can be checked to verify
|
||||
that the matching is optimal.
|
||||
This check is simpler and faster than the matching algorithm itself.
|
||||
It can therefore be a useful way to guard against bugs in the matching algorithm.
|
||||
|
||||
### Rules for updating dual variables
|
||||
|
||||
At the start of the matching algorithm, all vertex dual variables _u<sub>i</sub>_
|
||||
are initialized to the same value: half of the greatest edge weight value that
|
||||
occurs on any edge in the graph.
|
||||
|
||||
$$ u_i = {1 \over 2} \cdot \max_{(x,y) \in E} w_{x,y} $$
|
||||
|
||||
Initially, there are no blossoms yet so there are no _z<sub>B</sub>_ to be initialized.
|
||||
When the algorithm creates a new blossom, it initializes its dual variable to
|
||||
_z<sub>B</sub>_ = 0.
|
||||
Note that this does not change the slack of any edge.
|
||||
|
||||
If a search for an augmenting path fails while there are still unmatched vertices
|
||||
with positive dual variables, it may not yet have found the maximum weight matching.
|
||||
In such cases the algorithm updates the dual variables until either
|
||||
an augmenting path gets unlocked or the dual variables of all unmatched vertices reach zero.
|
||||
|
||||
To update the dual variables, the algorithm chooses a value _δ_ that represents how much
|
||||
the duals will change.
|
||||
It then changes dual variables as follows:
|
||||
|
||||
- _u<sub>x</sub> ← u<sub>x</sub> − δ_ for every S-vertex _x_
|
||||
- _u<sub>x</sub> ← u<sub>x</sub> + δ_ for every T-vertex _x_
|
||||
- _z<sub>B</sub> ← z<sub>B</sub> + 2 * δ_ for every non-trivial S-blossom _B_
|
||||
- _z<sub>B</sub> ← z<sub>B</sub> − 2 * δ_ for every non-trivial T-blossom _B_
|
||||
|
||||
Dual variables of unlabeled blossoms and their vertices remain unchanged.
|
||||
Dual variables _z<sub>B</sub>_ of non-trivial sub-blossoms also remain changed;
|
||||
only top-level blossoms have their _z<sub>B</sub>_ updated.
|
||||
|
||||
Note that this update does not change the slack of edges that are either matched,
|
||||
or linked in the alternating tree, or contained in a blossom.
|
||||
However, the update reduces the slack of edges between S blossoms and edges between S-blossoms
|
||||
and unlabeled blossoms.
|
||||
It may cause some of these edges to become tight, allowing them to be used
|
||||
to construct an augmenting path.
|
||||
|
||||
The value of _δ_ is determined as follows:
|
||||
_δ_ = min(_δ<sub>1</sub>_, _δ<sub>2</sub>_, _δ<sub>3</sub>_, _δ<sub>4</sub>_) where
|
||||
|
||||
- _δ<sub>1</sub>_ is the minimum _u<sub>x</sub>_ of any S-vertex _x_.
|
||||
- _δ<sub>2</sub>_ is the minimum slack of any edge between an S-blossom and
|
||||
an unlabeled blossom.
|
||||
- _δ<sub>3</sub>_ is half of the minimum slack of any edge between two different S-blossoms.
|
||||
- _δ<sub>4</sub>_ is half of the minimum _z<sub>B</sub>_ of any T-blossom _B_.
|
||||
|
||||
_δ<sub>1</sub>_ protects against any vertex dual becoming negative.
|
||||
_δ<sub>2</sub>_ and _δ<sub>3</sub>_ together protect against any edge slack
|
||||
becoming negative.
|
||||
_δ<sub>4</sub>_ protects against any blossom dual becoming negative.
|
||||
|
||||
If the dual update is limited by _δ<sub>1</sub>_, it causes the duals of all remaining
|
||||
unmatched vertices to become zero.
|
||||
At that point the maximum matching has been found and the algorithm ends.
|
||||
If the dual update is limited by _δ<sub>2</sub>_ or _δ<sub>3</sub>_, it causes
|
||||
an edge to become tight.
|
||||
The next step is to either add that edge to the alternating tree (_δ<sub>2</sub>_)
|
||||
or use it to construct a blossom or augmenting path (_δ<sub>3</sub>_).
|
||||
If the dual update is limited by _δ<sub>4</sub>_, it causes the dual variable of
|
||||
a T-blossom to become zero.
|
||||
The next step is to expand that blossom.
|
||||
|
||||
A dual update may find that _δ = 0_, implying that the dual variables don't change.
|
||||
This can still be useful since all types of updates have side effects (adding an edge
|
||||
to an alternating tree, or expanding a blossom) that allow the algorithm to make progress.
|
||||
|
||||
During a single _stage_, the algorithm may iterate several times between scanning tight edges and
|
||||
updating dual variables.
|
||||
These iterations are called _substages_.
|
||||
To clarify: A stage is the process of growing alternating trees until an augmenting path is found.
|
||||
A stage ends either by augmenting the matching, or by concluding that no further improvement
|
||||
is possible.
|
||||
Each stage consists of one or more substages.
|
||||
A substage scans tight edges to grow the alternating trees.
|
||||
When a substage runs out of tight edges, it ends by performing a dual variable update.
|
||||
A substage also ends immediately when it finds an augmenting path.
|
||||
At the end of each stage, labels and alternating trees are removed.
|
||||
|
||||
The matching algorithm ends when a substage ends in a dual variable update limited
|
||||
by _δ<sub>1</sub>_.
|
||||
At that point the matching has maximum weight.
|
||||
|
||||
### Expanding a blossom
|
||||
|
||||
There are two scenarios where a blossom must be expanded.
|
||||
One is when the dual variable of a T-blossom becomes zero after a dual update limited
|
||||
by _δ<sub>4</sub>_.
|
||||
In this case the blossom must be expanded, otherwise further dual updates would cause
|
||||
its dual to become negative.
|
||||
|
||||
The other scenario is when the algorithm is about to assign label T to an unlabeled blossom
|
||||
with dual variable zero.
|
||||
A T-blossom with zero dual serves no purpose, potentially blocks an augmenting path,
|
||||
and is likely to be expanded anyway via a _δ<sub>4</sub>=0_ update.
|
||||
It is therefore better to preemptively expand the unlabeled blossom.
|
||||
The step that would have assigned label T to the blossom is then re-evaluated,
|
||||
which will cause it to assign label T to a sub-blossom of the expanded blossom.
|
||||
It may then turn out that this sub-blossom must also be expanded, and this becomes
|
||||
a recursive process until we get to a sub-blossom that is either a single vertex or
|
||||
a blossom with non-zero dual.
|
||||
|
||||
Note that [[5]](#galil1986) specifies that all top-level blossoms with dual variable zero should be
|
||||
expanded after augmenting the matching.
|
||||
This prevents the existence of unlabeled top-level blossoms with zero dual,
|
||||
and therefore prevents the scenario where label T would be assigned to such blossoms.
|
||||
That strategy is definitely correct, but it may lead to unnecessary expanding
|
||||
of blossoms which are then recreated during the search for the next augmenting path.
|
||||
Postponing the expansion of these blossoms until they are about to be labeled T,
|
||||
as described above, may be faster in some cases.
|
||||
|
||||
Expanding an unlabeled top-level blossom _B_ is pretty straightforward.
|
||||
Simply promote all of its sub-blossoms to top-level blossoms, then delete _B_.
|
||||
Note that the slack of all edges remains unchanged, since _z<sub>B</sub> = 0_.
|
||||
|
||||
Expanding a T-blossom is tricky because the labeled blossom is part of an alternating tree.
|
||||
After expanding the blossom, the part of the alternating tree that runs through the blossom
|
||||
must be reconstructed.
|
||||
An alternating path through a blossom always runs through its base vertex.
|
||||
After expanding T-blossom _B_, we can reconstruct the alternating path by following it
|
||||
from the sub-blossom where the path enters _B_ to the sub-blossom that contains the base vertex
|
||||
(choosing the direction around the blossom that takes an even number of steps).
|
||||
We then assign alternating labels T and S to the sub-blossoms along that path
|
||||
and link them into the alternating tree.
|
||||
All vertices of sub-blossoms that got label S are inserted into _Q_.
|
||||
|
||||
![Figure 5](doc/figures/graph5.png) <br>
|
||||
*Figure 5: Expanding a T-blossom*
|
||||
|
||||
### Keeping track of least-slack edges
|
||||
|
||||
To perform a dual variable update, the algorithm needs to compute the values
|
||||
of _δ<sub>1</sub>_, _δ<sub>2</sub>_, _δ<sub>3</sub>_ and _δ<sub>4</sub>_
|
||||
and determine which edge (_δ<sub>2</sub>_, _δ<sub>3</sub>_) or
|
||||
blossom (_δ<sub>4</sub>_) achieves the minimum value.
|
||||
|
||||
The total number of dual updates during a matching may be _Θ(n<sup>2</sup>)_.
|
||||
Since we want to limit the total number of steps of the matching algorithm to _O(n<sup>3</sup>)_,
|
||||
each dual update may use at most _O(n)_ steps.
|
||||
|
||||
We can find _δ<sub>1</sub>_ in _O(n)_ steps by simply looping over all vertices
|
||||
and checking their dual variables.
|
||||
We can find _δ<sub>4</sub>_ in _O(n)_ steps by simply looping over all non-trivial blossoms
|
||||
(since there are fewer than _n_ non-trivial blossoms).
|
||||
We could find _δ<sub>2</sub>_ and _δ<sub>3</sub>_ by simply looping over
|
||||
all edges of the graph in _O(m)_ steps, but that exceeds our budget of _O(n)_ steps.
|
||||
So we need better techniques.
|
||||
|
||||
For _δ<sub>2</sub>_, we determine the least-slack edge between an S-blossom and unlabeled
|
||||
blossom as follows.
|
||||
For every vertex _y_ in any unlabeled blossom, keep track of _e<sub>y</sub>_:
|
||||
the least-slack edge that connects _y_ to any S-vertex.
|
||||
The thing to keep track of is the identity of the edge, not the slack value.
|
||||
This information is kept up-to-date as part of the procedure that considers S-vertices.
|
||||
The scanning procedure eventually considers all edges _(x, y, w)_ where _x_ is an S-vertex.
|
||||
At that moment _e<sub>y</sub>_ is updated if the new edge has lower slack.
|
||||
|
||||
Calculating _δ<sub>2</sub>_ then becomes a matter of looping over all vertices _x_,
|
||||
checking whether _B(x)_ is unlabeled and calculating the slack of _e<sub>x</sub>_.
|
||||
|
||||
One subtle aspect of this technique is that a T-vertex can loose its label when
|
||||
the containing T-blossom gets expanded.
|
||||
At that point, we suddenly need to have kept track of its least-slack edge to any S-vertex.
|
||||
It is therefore necessary to do the same tracking also for T-vertices.
|
||||
So the technique is: For any vertex that is not an S-vertex, track its least-slack edge
|
||||
to any S-vertex.
|
||||
|
||||
Another subtle aspect is that a T-vertex may have a zero-slack edge to an S-vertex.
|
||||
Even though these edges are already tight, they must still be tracked.
|
||||
If the T-vertex loses its label, this edge needs to be reconsidered by the scanning procedure.
|
||||
By including these edges in least-slack edge tracking, they will be rediscovered
|
||||
through a _δ<sub>2</sub>=0_ update after the vertex becomes unlabeled.
|
||||
|
||||
For _δ<sub>3</sub>_, we determine the least-slack edge between any pair of S-blossoms
|
||||
as follows.
|
||||
For every S-blossom _B_, keep track of _e<sub>B</sub>_:
|
||||
the least-slack edge between _B_ and any other S-blossom.
|
||||
Note that this is done per S-blossoms, not per S-vertex.
|
||||
This information is kept up-to-date as part of the procedure that considers S-vertices.
|
||||
Calculating _δ<sub>3</sub>_ then becomes a matter of looping over all S-blossoms _B_
|
||||
and calculating the slack of _e<sub>B</sub>_.
|
||||
|
||||
A complication occurs when S-blossoms are merged.
|
||||
Some of the least-slack edges of the sub-blossoms may be internal edges in the merged blossom,
|
||||
and therefore irrelevant for _δ<sub>3</sub>_.
|
||||
As a result, the proper _e<sub>B</sub>_ of the merged blossom may be different from all
|
||||
least-slack edges of its sub-blossoms.
|
||||
An additional data structure is needed to find _e<sub>B</sub>_ of the merged blossom.
|
||||
|
||||
For every S-blossom _B_, maintain a list _L<sub>B</sub>_ of edges between _B_ and
|
||||
other S-blossoms.
|
||||
The purpose of _L<sub>B</sub>_ is to contain, for every other S-blossom, the least-slack edge
|
||||
between _B_ and that blossom.
|
||||
These lists are kept up-to-date as part of the procedure that considers S-vertices.
|
||||
While considering vertex _x_, if edge _(x, y, w)_ has positive slack,
|
||||
and _B(y)_ is an S-blossom, the edge is inserted in _L<sub>B(x)</sub>_.
|
||||
This may cause _L<sub>B(x)</sub>_ to contain multiple edges to _B(y)_.
|
||||
That's okay as long as it definitely contains the least-slack edge to _B(y)_.
|
||||
|
||||
When a new S-blossom is created, form its list _L<sub>B</sub>_ by merging the lists
|
||||
of its sub-blossoms.
|
||||
Ignore edges that are internal to the merged blossom.
|
||||
If there are multiple edges to the same target blossom, keep only the least-slack of these edges.
|
||||
Then find _e<sub>B</sub>_ of the merged blossom by simply taking the least-slack edge
|
||||
out of _L<sub>B</sub>_.
|
||||
|
||||
|
||||
## Run time of the algorithm
|
||||
|
||||
Every stage of the algorithm either increases the number of matched vertices by 2 or
|
||||
ends the matching.
|
||||
Therefore the number of stages is at most _n/2_.
|
||||
Every stage runs in _O(n<sup>2</sup>)_ steps, therefore the complete algorithm runs in
|
||||
_O(n<sup>3</sup>)_ steps.
|
||||
|
||||
During each stage, edge scanning is driven by the queue _Q_.
|
||||
Every vertex enters _Q_ at most once.
|
||||
Each vertex that enters _Q_ has its incident edges scanned, causing every edge in the graph
|
||||
to be scanned at most twice per stage.
|
||||
Scanning an edge is done in constant time, unless it leads to the discovery of a blossom
|
||||
or an augmenting path, which will be separately accounted for.
|
||||
Therefore edge scanning needs _O(m)_ steps per stage.
|
||||
|
||||
Creating a blossom reduces the number of top-level blossoms by at least 2,
|
||||
thus limiting the number of simultaneously existing blossoms to _O(n)_.
|
||||
Blossoms that are created during a stage become S-blossoms and survive until the end of that stage,
|
||||
therefore _O(n)_ blossoms are created during a stage.
|
||||
Creating a blossom involves tracing the alternating path to the closest common ancestor,
|
||||
and some bookkeeping per sub-blossom,
|
||||
and inserting new S-vertices _Q_,
|
||||
all of which can be done in _O(n)_ steps per blossom creation.
|
||||
The cost of managing least-slack edges between S-blossoms will be separately accounted for.
|
||||
Therefore blossom creation needs _O(n<sup>2</sup>)_ steps per stage
|
||||
(excluding least-slack edge management).
|
||||
|
||||
As part of creating a blossom, a list _L<sub>B</sub>_ of least-slack edges must be formed.
|
||||
This involves processing every element of all least-slack edge lists of its sub-blossoms,
|
||||
and removing redundant edges from the merged list.
|
||||
Merging and removing redundant edges can be done in one sweep via a temporary array indexed
|
||||
by target blossom.
|
||||
Collect the least-slack edges of the sub-blossoms into this array,
|
||||
indexed by the target blossom of the edge,
|
||||
keeping only the edge with lowest slack per target blossom.
|
||||
Then convert the array back into a list by removing unused indices.
|
||||
This takes _O(1)_ steps per candidate edge, plus _O(n)_ steps to manage the temporary array.
|
||||
I choose to shift the cost of collecting the candidate edges from the sub-blossoms to
|
||||
the actions that inserted those edges into the sub-blossom lists.
|
||||
There are two processes which insert edges into _L<sub>B</sub>_: edge scanning and blossom
|
||||
creation.
|
||||
Edge scanning inserts each graph edge at most twice per stage for a total cost of _O(m)_ steps
|
||||
per stage.
|
||||
Blossom creation inserts at most _O(n)_ edges per blossom creation.
|
||||
Therefore the total cost of S-blossom least-slack edge management is
|
||||
_O(m + n<sup>2</sup>) = O(n<sup>2</sup>)_ steps per stage.
|
||||
|
||||
The number of blossom expansions during a stage is _O(n)_.
|
||||
Expanding a blossom involves some bookkeeping per sub-blossom,
|
||||
and reconstructing the alternating path through the blossom,
|
||||
and inserting any new S-vertices into _Q_,
|
||||
all of which can be done in _O(n)_ steps per blossom.
|
||||
Therefore blossom expansion needs _O(n<sup>2</sup>)_ steps per stage.
|
||||
|
||||
The length of an augmenting path is _O(n)_.
|
||||
Tracing the augmenting path and augmenting the matching along the path can be done in _O(n)_ steps.
|
||||
Augmenting through a blossom takes a number of steps that is proportional in the number of
|
||||
its sub-blossoms.
|
||||
Since there are fewer than _n_ non-trivial blossoms, the total cost of augmenting through
|
||||
blossoms is _O(n)_ steps.
|
||||
Therefore the total cost of augmenting is _O(n)_ steps per stage.
|
||||
|
||||
A dual variable update limited by _δ<sub>1</sub>_ ends the algorithm and therefore
|
||||
happens at most once.
|
||||
An update limited by _δ<sub>2</sub>_ labels a previously labeled blossom
|
||||
and therefore happens _O(n)_ times per stage.
|
||||
An update limited by _δ<sub>3</sub>_ either creates a blossom or finds an augmenting path
|
||||
and therefore happens _O(n)_ times per stage.
|
||||
An update limited by _δ<sub>4</sub>_ expands a blossom and therefore happens
|
||||
_O(n)_ times per stage.
|
||||
Therefore the number of dual variable updates is _O(n)_ per stage.
|
||||
The cost of calculating the _δ_ values is _O(n)_ per update as discussed above.
|
||||
Applying changes to the dual variables can be done by looping over all vertices and looping over
|
||||
all top-level blossoms in _O(n)_ steps per update.
|
||||
Therefore the total cost of dual variable updates is _O(n<sup>2</sup>)_ per stage.
|
||||
|
||||
|
||||
## Implementation details
|
||||
|
||||
_TO BE WRITTEN_
|
||||
|
||||
|
||||
## References
|
||||
|
||||
1. <a id="edmonds1965a"></a>
|
||||
Jack Edmonds, "Paths, trees, and flowers." _Canadian Journal of Mathematics vol. 17 no. 3_, 1965.
|
||||
([link](https://doi.org/10.4153/CJM-1965-045-4))
|
||||
([pdf](https://www.cambridge.org/core/services/aop-cambridge-core/content/view/08B492B72322C4130AE800C0610E0E21/S0008414X00039419a.pdf/paths_trees_and_flowers.pdf))
|
||||
|
||||
2. <a id="edmonds1965b"></a>
|
||||
Jack Edmonds, "Maximum matching and a polyhedron with 0,1-vertices." _Journal of research of the National Bureau of Standards vol. 69B_, 1965.
|
||||
([pdf](https://nvlpubs.nist.gov/nistpubs/jres/69B/jresv69Bn1-2p125_A1b.pdf))
|
||||
|
||||
3. <a id="gabow1974"></a>
|
||||
Harold N. Gabow, "Implementation of algorithms for maximum matching on nonbipartite graphs." Ph.D. thesis, Stanford University, 1974.
|
||||
|
||||
4. <a id="galil_micali_gabow1986"></a>
|
||||
Z. Galil, S. Micali, H. Gabow, "An O(EV log V) algorithm for finding a maximal weighted matching in general graphs." _SIAM Journal on Computing vol. 15 no. 1_, 1986.
|
||||
([link](https://epubs.siam.org/doi/abs/10.1137/0215009))
|
||||
([pdf](https://www.researchgate.net/profile/Zvi-Galil/publication/220618201_An_OEVlog_V_Algorithm_for_Finding_a_Maximal_Weighted_Matching_in_General_Graphs/links/56857f5208ae051f9af1e257/An-OEVlog-V-Algorithm-for-Finding-a-Maximal-Weighted-Matching-in-General-Graphs.pdf))
|
||||
|
||||
5. <a id="galil1986"></a>
|
||||
Zvi Galil, "Efficient algorithms for finding maximum matching in graphs." _ACM Computing Surveys vol. 18 no. 1_, 1986.
|
||||
([link](https://dl.acm.org/doi/abs/10.1145/6462.6502))
|
||||
([pdf](https://dl.acm.org/doi/pdf/10.1145/6462.6502))
|
||||
|
||||
6. <a id="gabow1990"></a>
|
||||
Harold N. Gabow, "Data structures for weighted matching and nearest common ancestors with linking." _Proc. 1st ACM-SIAM symposium on discrete algorithms_, 1990.
|
||||
([link](https://dl.acm.org/doi/abs/10.5555/320176.320229))
|
||||
([pdf](https://dl.acm.org/doi/pdf/10.5555/320176.320229))
|
||||
|
||||
|
||||
---
|
||||
Written in 2023 by Joris van Rantwijk.
|
||||
This work is licensed under [CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0/).
|
After Width: | Height: | Size: 19 KiB |
|
@ -0,0 +1,393 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="example1.svg"
|
||||
inkscape:export-filename="/home/joris/projects/repo/maximum-weight-matching/doc/figures/example1.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="interpolate_points"
|
||||
id="path-effect964"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
interpolator_type="CentripetalCatmullRom" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect962"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="66.145828,115.38541 , 25.135414,0"
|
||||
dist_rdm="0;640021988"
|
||||
growth="0"
|
||||
do_bend="false"
|
||||
bender="66.145828,120.38541 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="0"
|
||||
scale_bb="0"
|
||||
scale_tf="0"
|
||||
scale_tb="0"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="false"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect958"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="93.92708,114.0625 , 27.11979,0"
|
||||
dist_rdm="0;1"
|
||||
growth="0"
|
||||
do_bend="true"
|
||||
bender="93.92708,119.0625 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="1"
|
||||
scale_bb="1"
|
||||
scale_tf="1"
|
||||
scale_tb="1"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="true"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0.25" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="345.10507"
|
||||
inkscape:cy="396.94192"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1622"
|
||||
inkscape:window-height="1205"
|
||||
inkscape:window-x="462"
|
||||
inkscape:window-y="104"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid10" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1192"
|
||||
width="79.375"
|
||||
height="58.208332"
|
||||
x="39.687504"
|
||||
y="37.041668" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.125,79.375 105.83333,52.916667"
|
||||
id="path988" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 83.809213,85.572898 1.04868,-1.549347 1.54936,1.048667 1.04867,-1.549346 1.54935,1.048667 1.04868,-1.549348 1.549347,1.048669 1.04868,-1.549348 1.54935,1.048667 1.04867,-1.549346 1.54936,1.048667 1.04868,-1.549347 1.54935,1.048669 1.04867,-1.549348 1.54936,1.048667 1.04867,-1.549346 1.54936,1.048667 1.04868,-1.549348 1.54935,1.048669 1.04868,-1.549347 1.54935,1.048668 1.04867,-1.549348"
|
||||
id="path986"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 79.69704,58.935443 1.04868,-1.549347 1.54936,1.048667 1.04867,-1.549346 1.54935,1.048667 1.04868,-1.549348 1.54935,1.048669 1.04868,-1.549348 1.54935,1.048667 1.04867,-1.549346 1.54936,1.048667 1.04868,-1.549347 1.54935,1.048669 1.04867,-1.549348 1.54936,1.048667 1.04867,-1.549346 1.54936,1.048667 1.04868,-1.549348 1.54935,1.048669 1.04868,-1.549347 1.54935,1.048668 1.04867,-1.549348"
|
||||
id="path982"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 52.916667,47.625 C 71.4375,44.979167 89.958333,44.979167 105.83333,52.916667"
|
||||
id="path978"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 84.666666,84.666666 79.374999,58.208333"
|
||||
id="path976" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 58.208333,79.374999 79.375,58.208333"
|
||||
id="path972"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 52.916666,47.624999 5.291667,31.75"
|
||||
id="path974" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 58.208333,79.375 26.458334,5.291667"
|
||||
id="path970"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0"
|
||||
d="M 52.916667,47.625 79.375,58.208333"
|
||||
id="path954"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g844"
|
||||
transform="translate(42.42431,10.951862)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path12"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text16"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan14"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">1</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g920"
|
||||
transform="translate(15.888127,0.15956844)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle914"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text918"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan916"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">0</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g928"
|
||||
transform="translate(21.396881,31.955909)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle922"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text926"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan924"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">2</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g936"
|
||||
transform="translate(47.555628,37.148317)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle930"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text934"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan932"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">3</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g944"
|
||||
transform="translate(68.956639,5.2429309)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle938"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text942"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan940"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">4</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g952"
|
||||
transform="translate(73.968114,31.690047)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle946"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text950"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan948"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">5</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="92.088181"
|
||||
y="62.318359"
|
||||
id="text930"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan928"
|
||||
x="92.088181"
|
||||
y="62.318359"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">8</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="97.416656"
|
||||
y="88.249016"
|
||||
id="text935"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan933"
|
||||
x="97.416656"
|
||||
y="88.249016"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;"
|
||||
x="63.431625"
|
||||
y="58.273392"
|
||||
id="text939"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan937"
|
||||
x="63.431625"
|
||||
y="58.273392"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';stroke-width:0.264583px;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;">5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="68.829323"
|
||||
y="87.769371"
|
||||
id="text943"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan941"
|
||||
x="68.829323"
|
||||
y="87.769371"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="109.6088"
|
||||
y="66.681702"
|
||||
id="text947"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan945"
|
||||
x="109.6088"
|
||||
y="66.681702"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="50.6371"
|
||||
y="66.209953"
|
||||
id="text951"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan949"
|
||||
x="50.6371"
|
||||
y="66.209953"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;"
|
||||
x="83.705391"
|
||||
y="73.321373"
|
||||
id="text955"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan953"
|
||||
x="83.705391"
|
||||
y="73.321373"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';stroke-width:0.264583px;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;">4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="80.798698"
|
||||
y="44.537128"
|
||||
id="text959"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan957"
|
||||
x="80.798698"
|
||||
y="44.537128"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="69.949814"
|
||||
y="72.836678"
|
||||
id="text963"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan961"
|
||||
x="69.949814"
|
||||
y="72.836678"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583px">3</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 43 KiB |
|
@ -0,0 +1,314 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="graph2.svg"
|
||||
inkscape:export-filename="/home/joris/projects/repo/maximum-weight-matching/doc/figures/graph2.png"
|
||||
inkscape:export-xdpi="79.871994"
|
||||
inkscape:export-ydpi="79.871994">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="interpolate_points"
|
||||
id="path-effect964"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
interpolator_type="CentripetalCatmullRom" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect962"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="66.145828,115.38541 , 25.135414,0"
|
||||
dist_rdm="0;640021988"
|
||||
growth="0"
|
||||
do_bend="false"
|
||||
bender="66.145828,120.38541 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="0"
|
||||
scale_bb="0"
|
||||
scale_tf="0"
|
||||
scale_tb="0"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="false"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect958"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="93.92708,114.0625 , 27.11979,0"
|
||||
dist_rdm="0;1"
|
||||
growth="0"
|
||||
do_bend="true"
|
||||
bender="93.92708,119.0625 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="1"
|
||||
scale_bb="1"
|
||||
scale_tf="1"
|
||||
scale_tb="1"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="true"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0.25" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="375.61426"
|
||||
inkscape:cy="281.12866"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1622"
|
||||
inkscape:window-height="1205"
|
||||
inkscape:window-x="462"
|
||||
inkscape:window-y="104"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid10" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.500001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1192"
|
||||
width="177.27083"
|
||||
height="66.145836"
|
||||
x="13.229167"
|
||||
y="10.583333" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path120"
|
||||
cx="54.066372"
|
||||
cy="42.258385"
|
||||
rx="30.15976"
|
||||
ry="21.091717" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="ellipse945"
|
||||
cx="75.554016"
|
||||
cy="44.014038"
|
||||
rx="56.501801"
|
||||
ry="27.833481" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="ellipse959"
|
||||
cx="164.26952"
|
||||
cy="49.374588"
|
||||
rx="20.907955"
|
||||
ry="22.603338" />
|
||||
<rect
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect967"
|
||||
width="171.97917"
|
||||
height="60.854168"
|
||||
x="15.875"
|
||||
y="13.229168"
|
||||
ry="15.874999"
|
||||
rx="15.875006" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 137.58333,26.458333 111.125,31.75"
|
||||
id="path961"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 153.45833,58.208333 111.125,52.916667"
|
||||
id="path963"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 153.45835,59.518507 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.3208,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path957"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 164.04167,37.041667 153.45834,58.208334"
|
||||
id="path955"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.125,31.75 V 52.916667"
|
||||
id="path114"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 89.958297,31.745752 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.320807,1.325035 1.32502,-1.320785 1.320806,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path116"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 31.75,42.333333 47.625,52.916667"
|
||||
id="path98"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 48.94579,54.216219 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path104"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 47.622897,31.735125 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path982"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 174.62501,58.208334 164.04167,37.041667"
|
||||
id="path988"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 47.625,52.916667 C 58.208333,64.822917 72.760417,67.46875 84.666667,63.5"
|
||||
id="path978"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 68.791667,31.75 0,21.166667"
|
||||
id="path974"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 68.791667,31.75 H 89.958333"
|
||||
id="path970"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 31.75,42.333333 47.625,31.75"
|
||||
id="path954"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle914"
|
||||
cx="47.604214"
|
||||
cy="31.910629"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle90"
|
||||
cx="32.069218"
|
||||
cy="42.525612"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle92"
|
||||
cx="47.702606"
|
||||
cy="52.998577"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle94"
|
||||
cx="68.597183"
|
||||
cy="52.553631"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle96"
|
||||
cx="68.921364"
|
||||
cy="32.385708"
|
||||
r="5.2916665" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 86.780148,62.713017 0.793415,-1.694328 1.694343,0.793378 0.793376,-1.694316 1.694312,0.79339 0.793376,-1.694316 1.694344,0.793382 0.793377,-1.694316 1.694341,0.793377 0.793388,-1.694322 1.69433,0.793387 0.7934,-1.694329 1.69432,0.793394 0.79339,-1.694324 1.69433,0.793381 0.79339,-1.69432 1.69435,0.79338 0.79337,-1.694314 1.69432,0.793386 0.79339,-1.694314 1.69433,0.793378 0.79341,-1.694326"
|
||||
id="path100"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle106"
|
||||
cx="89.787659"
|
||||
cy="31.939535"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle108"
|
||||
cx="111.22662"
|
||||
cy="31.823664"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle110"
|
||||
cx="110.62241"
|
||||
cy="52.91325"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle112"
|
||||
cx="84.472618"
|
||||
cy="64.121773"
|
||||
r="5.2916665" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 141.33913,28.983182 1.69689,-0.787931 0.78797,1.696865 1.69684,-0.787949 0.78794,1.696856 1.69685,-0.78795 0.78796,1.696869 1.69685,-0.787948 0.78796,1.69686 1.69685,-0.787948 0.78796,1.696862 1.69688,-0.787935 0.78794,1.69686 1.69686,-0.787949 0.78797,1.696866 1.69685,-0.787945 0.78796,1.696867"
|
||||
id="path118"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle947"
|
||||
cx="164.50783"
|
||||
cy="37.01091"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle949"
|
||||
cx="175.12541"
|
||||
cy="58.340195"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle951"
|
||||
cx="153.50945"
|
||||
cy="58.462093"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle953"
|
||||
cx="137.87381"
|
||||
cy="26.984818"
|
||||
r="5.2916665" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 30 KiB |
|
@ -0,0 +1,721 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="graph3.svg"
|
||||
inkscape:export-filename="/home/joris/projects/repo/maximum-weight-matching/doc/figures/graph3.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker3395"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path3393" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker3263"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path3261" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker3139"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path3137" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker3011"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path3009" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2879"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2877" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2785"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2783" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2699"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2697" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2621"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2619" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2519"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2517" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2257"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2255" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker2147"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000099;stroke-opacity:1;fill:#000099;fill-opacity:1"
|
||||
id="path2145" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow2Lend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(1.1) rotate(180) translate(1,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path996" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Lend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) rotate(180) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path978" />
|
||||
</marker>
|
||||
<inkscape:path-effect
|
||||
effect="interpolate_points"
|
||||
id="path-effect964"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
interpolator_type="CentripetalCatmullRom" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect962"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="66.145828,115.38541 , 25.135414,0"
|
||||
dist_rdm="0;640021988"
|
||||
growth="0"
|
||||
do_bend="false"
|
||||
bender="66.145828,120.38541 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="0"
|
||||
scale_bb="0"
|
||||
scale_tf="0"
|
||||
scale_tb="0"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="false"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect958"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="93.92708,114.0625 , 27.11979,0"
|
||||
dist_rdm="0;1"
|
||||
growth="0"
|
||||
do_bend="true"
|
||||
bender="93.92708,119.0625 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="1"
|
||||
scale_bb="1"
|
||||
scale_tf="1"
|
||||
scale_tb="1"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="true"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0.25" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="517.0235"
|
||||
inkscape:cy="411.67174"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1622"
|
||||
inkscape:window-height="1205"
|
||||
inkscape:window-x="462"
|
||||
inkscape:window-y="104"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid10" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1192"
|
||||
width="153.45834"
|
||||
height="52.916664"
|
||||
x="21.166666"
|
||||
y="84.666664" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.125,121.70833 89.958333,100.54167"
|
||||
id="path971"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 133.80013,122.39481 0.29561,-1.84737 1.84741,0.29561 0.29563,-1.84736 1.84737,0.29564 0.29565,-1.84739 1.84737,0.29564 0.29563,-1.84737 1.84739,0.29563 0.29563,-1.84738 1.84738,0.29562 0.29566,-1.84735 1.84737,0.29562 0.29563,-1.84738 1.84738,0.29561"
|
||||
id="path95"
|
||||
sodipodi:nodetypes="ccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 53.181523,110.52185 1.313644,1.33213 1.332125,-1.31363 1.313635,1.33212 1.332136,-1.31363 1.31363,1.33213 1.332137,-1.31363 1.313633,1.33212 1.33212,-1.31363 1.31365,1.33213 1.33213,-1.31363 1.31364,1.33212 1.33213,-1.31363 1.31365,1.33213 1.33211,-1.31363 1.31365,1.33212 1.33214,-1.31363"
|
||||
id="path101"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 89.967747,121.13296 1.313644,1.33213 1.332125,-1.31363 1.313635,1.33212 1.332136,-1.31363 1.31363,1.33213 1.332137,-1.31363 1.313633,1.33212 1.332133,-1.31363 1.31364,1.33213 1.33214,-1.31363 1.31363,1.33212 1.33213,-1.31363 1.31365,1.33213 1.33211,-1.31363 1.31365,1.33212 1.33214,-1.31363"
|
||||
id="path99"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 89.96781,99.683223 1.313644,1.332127 1.332125,-1.313627 1.313635,1.332117 1.332136,-1.313627 1.31363,1.332127 1.332137,-1.313627 1.313633,1.332117 1.33212,-1.313627 1.31365,1.332127 1.33213,-1.313627 1.31364,1.332117 1.33213,-1.313627 1.31365,1.332127 1.33211,-1.313627 1.31365,1.332117 1.33214,-1.313627"
|
||||
id="path97"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 148.16667,111.125 15.875,-10.58333"
|
||||
id="path988"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 111.125,121.70833 V 100.54167"
|
||||
id="path976"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 31.75,111.125 H 52.916667"
|
||||
id="path972"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 132.29167,121.70833 H 111.125"
|
||||
id="path974"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 74.083333,111.125 15.875,-10.58333"
|
||||
id="path970"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 74.083333,111.125 15.875,10.58333"
|
||||
id="path954"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g844"
|
||||
transform="translate(16.129934,63.906986)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path12"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text16"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan14"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">1</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g920"
|
||||
transform="translate(-5.2355145,63.924376)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle914"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text918"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan916"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">0</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g928"
|
||||
transform="translate(37.366398,63.761161)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle922"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text926"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan924"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">2</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g936"
|
||||
transform="translate(53.018404,53.256611)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle930"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text934"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan932"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">3</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g944"
|
||||
transform="translate(73.97615,52.858403)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle938"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text942"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan940"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">4</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g952"
|
||||
transform="translate(53.014333,74.114933)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle946"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text950"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan948"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">5</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g69"
|
||||
transform="translate(74.014837,74.227231)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle63"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text67"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan65"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">6</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g77"
|
||||
transform="translate(95.026592,74.163409)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle71"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text75"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan73"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">9</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g85"
|
||||
transform="translate(111.07644,63.7752)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle79"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text83"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan81"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">8</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g93"
|
||||
transform="translate(127.24293,53.26291)">
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle87"
|
||||
cx="37.041668"
|
||||
cy="47.625"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
id="text91"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan89"
|
||||
x="34.881702"
|
||||
y="50.110447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.264583px">7</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="30.09598"
|
||||
y="104.3321"
|
||||
id="text109"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan107"
|
||||
x="30.09598"
|
||||
y="104.3321"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="109.39431"
|
||||
y="93.843819"
|
||||
id="text936"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan934"
|
||||
x="109.39431"
|
||||
y="93.843819"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="130.70004"
|
||||
y="115.02866"
|
||||
id="text940"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan938"
|
||||
x="130.70004"
|
||||
y="115.02866"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="109.25393"
|
||||
y="133.12964"
|
||||
id="text944"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan942"
|
||||
x="109.25393"
|
||||
y="133.12964"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="162.36929"
|
||||
y="94.014313"
|
||||
id="text948"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan946"
|
||||
x="162.36929"
|
||||
y="94.014313"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="51.211292"
|
||||
y="104.51315"
|
||||
id="text952"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan950"
|
||||
x="51.211292"
|
||||
y="104.51315"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="88.306549"
|
||||
y="94.007355"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="88.306549"
|
||||
y="94.007355"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="72.237892"
|
||||
y="104.48342"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="72.237892"
|
||||
y="104.48342"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="88.224533"
|
||||
y="133.44823"
|
||||
id="text964"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan962"
|
||||
x="88.224533"
|
||||
y="133.44823"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
|
||||
x="146.52075"
|
||||
y="104.3466"
|
||||
id="text968"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan966"
|
||||
x="146.52075"
|
||||
y="104.3466"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none;">T</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2519)"
|
||||
d="M 37.041667,103.1875 H 47.625"
|
||||
id="path2515" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="M 58.208334,103.1875 H 68.791667"
|
||||
id="path2617" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2699)"
|
||||
d="m 95.25,92.604167 h 10.58333"
|
||||
id="path2695" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2785)"
|
||||
d="m 95.25,130.96875 h 10.58333"
|
||||
id="path2781" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2879)"
|
||||
d="m 76.729167,99.21875 8.669357,-6.070352"
|
||||
id="path2875" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3011)"
|
||||
d="m 74.083333,120.38542 8.66936,6.07034"
|
||||
id="path3007" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3263)"
|
||||
d="m 160.80477,93.148401 -8.66935,6.070349"
|
||||
id="path3259" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3395)"
|
||||
d="m 144.19792,104.51042 -8.66935,6.07035"
|
||||
id="path3391" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1,384 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="graph4.svg"
|
||||
inkscape:export-filename="/home/joris/projects/repo/maximum-weight-matching/doc/figures/graph4.png"
|
||||
inkscape:export-xdpi="70"
|
||||
inkscape:export-ydpi="70">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow2Mend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path936" />
|
||||
</marker>
|
||||
<inkscape:path-effect
|
||||
effect="interpolate_points"
|
||||
id="path-effect964"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
interpolator_type="CentripetalCatmullRom" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect962"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="66.145828,115.38541 , 25.135414,0"
|
||||
dist_rdm="0;640021988"
|
||||
growth="0"
|
||||
do_bend="false"
|
||||
bender="66.145828,120.38541 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="0"
|
||||
scale_bb="0"
|
||||
scale_tf="0"
|
||||
scale_tb="0"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="false"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect958"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="93.92708,114.0625 , 27.11979,0"
|
||||
dist_rdm="0;1"
|
||||
growth="0"
|
||||
do_bend="true"
|
||||
bender="93.92708,119.0625 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="1"
|
||||
scale_bb="1"
|
||||
scale_tf="1"
|
||||
scale_tb="1"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="true"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0.25" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="590.3222"
|
||||
inkscape:cy="176.48039"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1622"
|
||||
inkscape:window-height="1205"
|
||||
inkscape:window-x="501"
|
||||
inkscape:window-y="87"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid10" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.500001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1192"
|
||||
width="306.91669"
|
||||
height="63.5"
|
||||
x="-5.2916665"
|
||||
y="15.875" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="ellipse40"
|
||||
cx="223.35181"
|
||||
cy="42.261078"
|
||||
rx="32.657074"
|
||||
ry="20.845545" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 216.2333,53.650764 1.80793,-0.481302 0.48134,1.807916 1.80789,-0.481324 0.48132,1.807901 1.80789,-0.481324 0.48134,1.807919 1.80789,-0.481324 0.48134,1.807914 1.80791,-0.481321 0.48132,1.807908 1.80793,-0.481303 0.48131,1.807905 1.8079,-0.481322 0.48134,1.807916 1.8079,-0.481318 0.48135,1.807922 1.81562,-0.498942 0.48421,1.807135 1.80714,-0.48422 0.48423,1.80714 1.80713,-0.484225 0.48422,1.80714 1.80714,-0.48422 0.48422,1.807135 1.80077,-0.473187 0.48422,1.80714"
|
||||
id="path48"
|
||||
sodipodi:nodetypes="ccccccccccccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 201.44321,43.732936 0.16606,-1.863511 1.86352,0.166032 0.16604,-1.863486 1.86349,0.166051 0.16604,-1.863488 1.86352,0.166036 0.16604,-1.863487 1.86351,0.166031 0.16604,-1.863494 1.86351,0.166046 0.16606,-1.863511 1.8635,0.166054 0.16604,-1.863494 1.86351,0.166033 0.16605,-1.863493 1.86352,0.166027"
|
||||
id="path82"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 238.12499,52.916667 H 216.95833"
|
||||
id="path80"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 269.87499,68.791667 H 248.70833"
|
||||
id="path78"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ccccff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 5.2916667,42.333332 H 26.458334 47.625 L 63.5,31.749999 H 84.666671 V 52.916665 H 63.5 c 10e-7,7.937501 23.812501,15.875001 31.749997,15.875 h 21.166663 21.16667"
|
||||
id="path872"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 95.247897,69.570541 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.320783,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path45"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 26.458334,42.849749 1.32506,-1.32078 1.32081,1.32503 1.32502,-1.32078 1.32078,1.32503 1.32502,-1.32079 1.32081,1.32504 1.32502,-1.32079 1.3208,1.32503 1.32503,-1.32079 1.32079,1.32504 1.32506,-1.32079 1.32078,1.32504 1.32503,-1.32079 1.32081,1.32503 1.32503,-1.32078 1.32081,1.32503"
|
||||
id="path116"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path120"
|
||||
cx="69.893463"
|
||||
cy="42.261078"
|
||||
rx="32.657074"
|
||||
ry="20.845545" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 137.58333,68.791666 H 116.41667"
|
||||
id="path961"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 47.212051,42.333332 15.875,10.583334"
|
||||
id="path98"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 64.556231,53.695541 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path104"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 63.233314,32.264291 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.320817,1.325033"
|
||||
id="path982"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 63.500001,52.916666 c 0,7.9375 23.8125,15.875 31.749996,15.875"
|
||||
id="path978"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 84.666671,31.749999 V 52.916666"
|
||||
id="path974"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 5.2916677,42.333332 H 26.458333"
|
||||
id="path970"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 47.212051,42.333332 15.875,-10.583333"
|
||||
id="path954"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle914"
|
||||
cx="63.066265"
|
||||
cy="31.910627"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle90"
|
||||
cx="47.531269"
|
||||
cy="42.525612"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle92"
|
||||
cx="63.164661"
|
||||
cy="52.998577"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle94"
|
||||
cx="84.059235"
|
||||
cy="52.553631"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle96"
|
||||
cx="84.383423"
|
||||
cy="32.385708"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle106"
|
||||
cx="5.1197877"
|
||||
cy="42.343552"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle108"
|
||||
cx="95.154907"
|
||||
cy="68.71524"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle110"
|
||||
cx="137.37617"
|
||||
cy="68.768745"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle112"
|
||||
cx="26.38341"
|
||||
cy="42.291424"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle953"
|
||||
cx="116.42221"
|
||||
cy="68.837791"
|
||||
r="5.2916665" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 267.22917,69.570541 1.32506,-1.320783 1.32081,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path36"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 158.75003,42.849749 1.32506,-1.32078 1.32081,1.32503 1.32502,-1.32078 1.32078,1.32503 1.32502,-1.32079 1.32081,1.32504 1.32502,-1.32079 1.3208,1.32503 1.32503,-1.32079 1.32079,1.32504 1.32506,-1.32079 1.32078,1.32504 1.32503,-1.32079 1.32081,1.32503 1.32503,-1.32078 1.32081,1.32503"
|
||||
id="path38"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 238.12499,31.75 H 216.95833"
|
||||
id="path42"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 200.67039,42.333332 15.875,10.583334"
|
||||
id="path44"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 237.34823,29.36664 1.32079,1.32506 -1.32504,1.32081 1.32079,1.32502 -1.32503,1.32078 1.32078,1.32502 -1.32503,1.32081 1.32078,1.32502 -1.32502,1.32081 1.32078,1.32503 -1.32503,1.32079 1.32078,1.32506 -1.32503,1.32078 1.32079,1.32503 -1.32503,1.32081 1.32078,1.32503 -1.32503,1.32081"
|
||||
id="path46"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 179.91667,42.333333 h 21.16667"
|
||||
id="path54"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle58"
|
||||
cx="216.5246"
|
||||
cy="31.910627"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle60"
|
||||
cx="200.98961"
|
||||
cy="42.525612"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle62"
|
||||
cx="216.623"
|
||||
cy="52.998577"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle64"
|
||||
cx="237.51758"
|
||||
cy="52.553631"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle66"
|
||||
cx="237.84177"
|
||||
cy="32.385708"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle68"
|
||||
cx="158.57812"
|
||||
cy="42.343552"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle70"
|
||||
cx="248.61324"
|
||||
cy="68.71524"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle72"
|
||||
cx="290.8345"
|
||||
cy="68.768745"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle74"
|
||||
cx="179.84175"
|
||||
cy="42.291424"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle76"
|
||||
cx="269.88052"
|
||||
cy="68.837791"
|
||||
r="5.2916665" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
|
||||
d="m 134.93751,47.625 h 13.22916"
|
||||
id="path84"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 43 KiB |
|
@ -0,0 +1,706 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="graph5.svg"
|
||||
inkscape:export-filename="/home/joris/projects/repo/maximum-weight-matching/doc/figures/graph5.png"
|
||||
inkscape:export-xdpi="70"
|
||||
inkscape:export-ydpi="70">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow2Mend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path936" />
|
||||
</marker>
|
||||
<inkscape:path-effect
|
||||
effect="interpolate_points"
|
||||
id="path-effect964"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
interpolator_type="CentripetalCatmullRom" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect962"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="66.145828,115.38541 , 25.135414,0"
|
||||
dist_rdm="0;640021988"
|
||||
growth="0"
|
||||
do_bend="false"
|
||||
bender="66.145828,120.38541 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="0"
|
||||
scale_bb="0"
|
||||
scale_tf="0"
|
||||
scale_tb="0"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="false"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0" />
|
||||
<inkscape:path-effect
|
||||
effect="rough_hatches"
|
||||
id="path-effect958"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
direction="93.92708,114.0625 , 27.11979,0"
|
||||
dist_rdm="0;1"
|
||||
growth="0"
|
||||
do_bend="true"
|
||||
bender="93.92708,119.0625 , 5,0"
|
||||
bottom_edge_variation="0;1"
|
||||
top_edge_variation="0;1"
|
||||
bottom_tgt_variation="0;1"
|
||||
top_tgt_variation="0;1"
|
||||
scale_bf="1"
|
||||
scale_bb="1"
|
||||
scale_tf="1"
|
||||
scale_tb="1"
|
||||
top_smth_variation="0;1"
|
||||
bottom_smth_variation="0;1"
|
||||
fat_output="true"
|
||||
stroke_width_top="1"
|
||||
stroke_width_bottom="1"
|
||||
front_thickness="1"
|
||||
back_thickness="0.25" />
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker2519"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000099;fill-opacity:1;fill-rule:evenodd;stroke:#000099;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path2517" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker2621"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000099;fill-opacity:1;fill-rule:evenodd;stroke:#000099;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path2619" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker2699"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000099;fill-opacity:1;fill-rule:evenodd;stroke:#000099;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path2697" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker3011"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000099;fill-opacity:1;fill-rule:evenodd;stroke:#000099;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path3009" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker3395"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000099;fill-opacity:1;fill-rule:evenodd;stroke:#000099;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path3393" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="846.93571"
|
||||
inkscape:cy="158.72838"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1622"
|
||||
inkscape:window-height="1205"
|
||||
inkscape:window-x="692"
|
||||
inkscape:window-y="73"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid10" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.500001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1192"
|
||||
width="280.45837"
|
||||
height="89.958336"
|
||||
x="-3.0517578e-05"
|
||||
y="5.2916665" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 84.148126,16.137476 1.320783,1.32506 -1.325032,1.320811 1.320785,1.32502 -1.325031,1.32078 1.320786,1.32502 -1.325035,1.32081 1.320785,1.32502 -1.325029,1.32081 1.320788,1.32503 -1.325034,1.32079 1.320785,1.325063 -1.325036,1.32078 1.320789,1.32503 -1.325032,1.32081 1.320785,1.32503 -1.325033,1.32081"
|
||||
id="path347"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 94.473238,51.593753 1.320783,1.32506 -1.325032,1.320811 1.320785,1.32502 -1.325031,1.32078 1.320786,1.32502 -1.325035,1.32081 1.320785,1.32502 -1.325029,1.32081 1.320788,1.32503 -1.325034,1.32079 1.320785,1.325063 -1.325036,1.32078 1.320789,1.32503 -1.325032,1.32081 1.320785,1.32503 -1.325033,1.32081"
|
||||
id="path345"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 73.304459,51.591646 1.320783,1.32506 -1.325032,1.320811 1.320785,1.32502 -1.325031,1.32078 1.320786,1.32502 -1.325035,1.32081 1.320785,1.32502 -1.325029,1.32081 1.320788,1.32503 -1.325034,1.32079 1.320785,1.325063 -1.325036,1.32078 1.320789,1.32503 -1.325032,1.32081 1.320785,1.32503 -1.325033,1.32081"
|
||||
id="path104"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 95.25,74.083334 H 74.083343"
|
||||
id="path335"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 84.666667,37.041667 -10.583334,15.875"
|
||||
id="path343"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 84.666667,37.041667 95.25,52.916667"
|
||||
id="path341"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 105.83334,16.38718 1.32506,-1.320783 1.3208,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 L 127,16.421155"
|
||||
id="path45"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 105.83333,15.875 H 84.666667"
|
||||
id="path339"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 31.749994,74.599749 1.32506,-1.32078 1.32081,1.32503 1.32502,-1.32078 1.32078,1.32503 1.32502,-1.32079 1.32081,1.32504 1.32502,-1.32079 1.3208,1.32503 1.32503,-1.32079 1.32079,1.32504 1.32506,-1.32079 1.32078,1.32504 1.32503,-1.32079 1.32081,1.32503 1.32503,-1.32078 1.32081,1.32503"
|
||||
id="path116"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#a6a6a6;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path120"
|
||||
cx="58.174355"
|
||||
cy="-84.602371"
|
||||
rx="31.383354"
|
||||
ry="23.39333"
|
||||
transform="rotate(90)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 74.083327,74.083333 H 52.916667"
|
||||
id="path961"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 10.583327,74.083332 H 31.749993"
|
||||
id="path970"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle914"
|
||||
cx="95.231979"
|
||||
cy="52.922794"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle90"
|
||||
cx="74.057854"
|
||||
cy="74.104568"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle92"
|
||||
cx="95.269073"
|
||||
cy="74.136528"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle96"
|
||||
cx="74.057442"
|
||||
cy="52.854507"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle106"
|
||||
cx="10.411448"
|
||||
cy="74.093552"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle108"
|
||||
cx="84.947517"
|
||||
cy="16.052048"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle110"
|
||||
cx="84.635544"
|
||||
cy="37.077843"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle112"
|
||||
cx="31.67507"
|
||||
cy="74.04142"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle953"
|
||||
cx="105.79613"
|
||||
cy="15.917192"
|
||||
r="5.2916665" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
|
||||
d="m 132.29167,47.625 h 15.875"
|
||||
id="path84"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="8.4830704"
|
||||
y="75.930473"
|
||||
id="text109"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan107"
|
||||
x="8.4830704"
|
||||
y="75.930473"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="30.058531"
|
||||
y="76.088562"
|
||||
id="text952"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan950"
|
||||
x="30.058531"
|
||||
y="76.088562"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="69.633911"
|
||||
y="42.147884"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="69.633911"
|
||||
y="42.147884"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2519)"
|
||||
d="M 15.875,68.791667 H 26.45833"
|
||||
id="path2515" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="m 37.041667,68.791667 h 10.58334"
|
||||
id="path2617" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2699)"
|
||||
d="m 58.208333,68.791667 5.291667,0"
|
||||
id="path2695"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle333"
|
||||
cx="52.929543"
|
||||
cy="73.970787"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle337"
|
||||
cx="127.01178"
|
||||
cy="15.9078"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="82.88665"
|
||||
y="17.825636"
|
||||
id="text351"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan349"
|
||||
x="82.88665"
|
||||
y="17.825636"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="103.87038"
|
||||
y="17.878658"
|
||||
id="text355"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan353"
|
||||
x="103.87038"
|
||||
y="17.878658"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="125.01585"
|
||||
y="17.956778"
|
||||
id="text359"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan357"
|
||||
x="125.01585"
|
||||
y="17.956778"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2519)"
|
||||
d="M 89.958326,10.583333 H 100.54166"
|
||||
id="path361" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="m 111.12499,10.583333 h 10.58334"
|
||||
id="path363" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="M 79.375,27.78125 V 21.166667"
|
||||
id="path365"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 227.13481,16.056841 1.32079,1.32506 -1.32504,1.320811 1.32079,1.32502 -1.32503,1.32078 1.32078,1.32502 -1.32503,1.32081 1.32078,1.32502 -1.32503,1.32081 1.32079,1.32503 -1.32503,1.32079 1.32078,1.325063 -1.32503,1.32078 1.32079,1.32503 -1.32504,1.32081 1.32079,1.32503 -1.32503,1.32081"
|
||||
id="path367"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 237.45992,51.513118 1.32079,1.32506 -1.32503,1.320811 1.32078,1.32502 -1.32503,1.32078 1.32079,1.32502 -1.32504,1.32081 1.32079,1.32502 -1.32503,1.32081 1.32078,1.32503 -1.32503,1.32079 1.32079,1.325063 -1.32504,1.32078 1.32079,1.32503 -1.32503,1.32081 1.32078,1.32503 -1.32503,1.32081"
|
||||
id="path369"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 216.29115,51.511011 1.32078,1.32506 -1.32503,1.320811 1.32078,1.32502 -1.32503,1.32078 1.32079,1.32502 -1.32504,1.32081 1.32079,1.32502 -1.32503,1.32081 1.32079,1.32503 -1.32504,1.32079 1.32079,1.325063 -1.32504,1.32078 1.32079,1.32503 -1.32503,1.32081 1.32078,1.32503 -1.32503,1.32081"
|
||||
id="path371"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 238.23669,74.002699 H 217.07003"
|
||||
id="path373"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 227.65335,36.961032 -10.58333,15.875"
|
||||
id="path375"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 227.65335,36.961032 10.58334,15.875"
|
||||
id="path377"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 248.82003,16.306545 1.32506,-1.320783 1.3208,1.325031 1.32502,-1.320785 1.32078,1.325031 1.32502,-1.320786 1.32081,1.325035 1.32502,-1.320785 1.32081,1.325029 1.32503,-1.320788 1.32079,1.325034 1.32506,-1.320785 1.32078,1.325036 1.32503,-1.320789 1.32081,1.325032 1.32503,-1.320785 1.32081,1.325033"
|
||||
id="path379"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 248.82002,15.794365 H 227.65335"
|
||||
id="path381"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 174.73668,74.519114 1.32506,-1.32078 1.32081,1.32503 1.32502,-1.32078 1.32078,1.32503 1.32502,-1.32079 1.32081,1.32504 1.32502,-1.32079 1.3208,1.32503 1.32503,-1.32079 1.32079,1.32504 1.32506,-1.32079 1.32078,1.32504 1.32503,-1.32079 1.32081,1.32503 1.32503,-1.32078 1.32081,1.32503"
|
||||
id="path383"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 217.07001,74.002698 H 195.90335"
|
||||
id="path387"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 153.57001,74.002697 h 21.16667"
|
||||
id="path389"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle391"
|
||||
cx="238.21866"
|
||||
cy="52.842159"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle393"
|
||||
cx="217.04454"
|
||||
cy="74.023926"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle395"
|
||||
cx="238.25575"
|
||||
cy="74.055885"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle397"
|
||||
cx="217.04413"
|
||||
cy="52.773872"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle399"
|
||||
cx="153.39813"
|
||||
cy="74.012909"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle401"
|
||||
cx="227.9342"
|
||||
cy="15.971413"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle403"
|
||||
cx="227.62222"
|
||||
cy="36.997208"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle405"
|
||||
cx="174.66176"
|
||||
cy="73.960777"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle407"
|
||||
cx="248.78279"
|
||||
cy="15.836557"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="151.5153"
|
||||
y="75.958916"
|
||||
id="text411"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan409"
|
||||
x="151.5153"
|
||||
y="75.958916"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="172.86226"
|
||||
y="76.062531"
|
||||
id="text415"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan413"
|
||||
x="172.86226"
|
||||
y="76.062531"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="215.15019"
|
||||
y="76.101471"
|
||||
id="text419"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan417"
|
||||
x="215.15019"
|
||||
y="76.101471"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2519)"
|
||||
d="m 158.86169,68.711032 h 10.58333"
|
||||
id="path425" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="m 180.02835,68.711032 h 10.58334"
|
||||
id="path427" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2699)"
|
||||
d="m 201.19502,68.711032 9.14873,0.08064"
|
||||
id="path429"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle431"
|
||||
cx="195.91623"
|
||||
cy="73.890144"
|
||||
r="5.2916665" />
|
||||
<circle
|
||||
style="fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle433"
|
||||
cx="269.99847"
|
||||
cy="15.827166"
|
||||
r="5.2916665" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="225.79042"
|
||||
y="17.795334"
|
||||
id="text437"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan435"
|
||||
x="225.79042"
|
||||
y="17.795334"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="246.86548"
|
||||
y="17.687965"
|
||||
id="text441"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan439"
|
||||
x="246.86548"
|
||||
y="17.687965"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="268.134"
|
||||
y="17.853552"
|
||||
id="text445"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan443"
|
||||
x="268.134"
|
||||
y="17.853552"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2519)"
|
||||
d="m 232.94501,10.502698 h 10.58334"
|
||||
id="path447" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="m 254.11168,10.502698 h 10.58334"
|
||||
id="path449" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="M 222.25,31.75 V 21.166667"
|
||||
id="path451"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="214.86095"
|
||||
y="54.87355"
|
||||
id="text455"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan453"
|
||||
x="214.86095"
|
||||
y="54.87355"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="M 211.66667,67.46875 V 58.208333"
|
||||
id="path457"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000099;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2621)"
|
||||
d="m 216.69375,45.772917 4.23333,-6.35"
|
||||
id="path459"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="225.90765"
|
||||
y="39.050762"
|
||||
id="text463"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan461"
|
||||
x="225.90765"
|
||||
y="39.050762"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">T</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="50.998085"
|
||||
y="75.976097"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="50.998085"
|
||||
y="75.976097"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="193.90843"
|
||||
y="75.900589"
|
||||
id="text423"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan421"
|
||||
x="193.90843"
|
||||
y="75.900589"
|
||||
style="font-size:5.64444px;fill:#000099;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none">S</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 38 KiB |