From 222939ae1d1b19d23315b4616254722424bd7059 Mon Sep 17 00:00:00 2001 From: Galyna Zholtkevych Date: Tue, 14 Nov 2017 22:58:17 +0200 Subject: [PATCH 1/4] Paper draft --- .../experiments/consistent_partitions.py | 7 +- dds_simulation/experiments/simulation.py | 107 +++-- dds_simulation/graphs/extrapolation.py | 33 -- dds_simulation/start_experiment.py | 37 +- dds_simulation/visualisation/extrapolation.py | 30 +- .../visualisation/graph_building.py | 34 +- dds_simulation/visualisation/graph_control.py | 23 +- etc/datastore.ini | 2 +- models/dds-class-diagram.uxf | 141 ++++++ papers/images/100-consistency-convergence.png | Bin 0 -> 13173 bytes .../images/1000-consistency-convergence.png | Bin 0 -> 12883 bytes papers/images/200-consistency-convergence.png | Bin 0 -> 12621 bytes papers/images/dds-class-diagram.png | Bin 0 -> 33077 bytes papers/index.aux | 49 ++- papers/index.tex | 414 ++++++++++++------ results/100-consistency-convergence.png | Bin 0 -> 13173 bytes results/1000-consistency-convergence.png | Bin 0 -> 12883 bytes results/200-consistency-convergence.png | Bin 0 -> 12621 bytes 18 files changed, 633 insertions(+), 244 deletions(-) delete mode 100644 dds_simulation/graphs/extrapolation.py create mode 100644 models/dds-class-diagram.uxf create mode 100644 papers/images/100-consistency-convergence.png create mode 100644 papers/images/1000-consistency-convergence.png create mode 100644 papers/images/200-consistency-convergence.png create mode 100644 papers/images/dds-class-diagram.png create mode 100644 results/100-consistency-convergence.png create mode 100644 results/1000-consistency-convergence.png create mode 100644 results/200-consistency-convergence.png diff --git a/dds_simulation/experiments/consistent_partitions.py b/dds_simulation/experiments/consistent_partitions.py index 600416e..87817e5 100644 --- a/dds_simulation/experiments/consistent_partitions.py +++ b/dds_simulation/experiments/consistent_partitions.py @@ -8,6 +8,9 @@ class ConsistentExperiment(DDS): + """ + + """ def _form_random_partitions(self): partitions_number = int(default.parameter('experiment', 'partitions')) consistent_partitions = [] @@ -55,10 +58,6 @@ def single_iteration(self, partition, nodes_original): i = 0 consistent_partitions = self._form_partitions(partition) taking_count = 2 - found_inconsistent_counts = [0 for i in - range(0, len(consistent_partitions))] - - #for partition in consistent_partitions: nodes = deepcopy(nodes_original) random.shuffle(nodes) diff --git a/dds_simulation/experiments/simulation.py b/dds_simulation/experiments/simulation.py index 9dd8528..9b71b36 100644 --- a/dds_simulation/experiments/simulation.py +++ b/dds_simulation/experiments/simulation.py @@ -1,21 +1,43 @@ import abc import random +import networkx + from dds_simulation.experiments.node import Node from dds_simulation.experiments.link import Link from dds_simulation.experiments.dataunit import Dataunit +from dds_simulation.visualisation import graph_control, extrapolation -class DDS(object): +class DDS(object): + """ + Base class for all experiments + """ __metaclass__ = abc.ABCMeta - def __init__(self, graph, controller, distribution, dataunits_number): + def __init__(self, graph): self.nodes = list() self.links = set() self.graph = graph - self.controller = controller + @abc.abstractmethod + def start_experiment(self): + """Starting one of experiments""" + + +class DDSMessaging(DDS): + """ + Class simulating messaging broadcasting across DDS + """ + + def __init__(self, graph, distribution, dataunits_number): + super(DDSMessaging, self).__init__(graph) + self.controller = graph_control.GraphController(graph) + self.time_slots_taken = 0 + self.diameter = networkx.diameter(graph) + self.controller = graph_control.GraphController(graph) + self.nodes = [] for node_ident in graph.nodes(): neighbors = graph.neighbors(node_ident) self.nodes.append(Node(node_ident, neighbors)) @@ -23,12 +45,9 @@ def __init__(self, graph, controller, distribution, dataunits_number): for node1, node2 in graph.edges(): self.links.add(Link(node1, node2)) - self.dataunits = DDS.generate_data(dataunits_number) - self.distribute_data(distribution) - @abc.abstractmethod - def start_experiment(self): - """Starting one of experiments""" + self.dataunits = DDSMessaging.generate_data(dataunits_number) + self.distribute_data(distribution) @staticmethod def generate_data(dataunits): @@ -44,6 +63,26 @@ def distribute_data(self, distribution): for node in self.nodes: node.add_dataunits(dataunits_per_node) + def start_experiment(self): + self.simulate_message() + + def _simulate_message_single_iteration(self, node_identity, + nodes_processed): + neighbors = self.graph.neighbors(node_identity) + print("Node: ", node_identity) + print("NEIGHBORS: ", neighbors) + + # assume now that go to each node takes 1 ts, broadcasting parallel + #print("ts taken>>> ", self.time_slots_taken) + + nodes_processed.update(set(neighbors)) + nodes_processed.update(set([node_identity, ])) + return neighbors + + def _simulate_parallel_iterations(self): + pass + + def simulate_message(self): """Simulate communication process. @@ -51,34 +90,50 @@ def simulate_message(self): nodes. """ dataunit_id = random.randint(0, len(self.dataunits)) - node_identity = random.randint(0, len(self.nodes)) - # 1 time slot when initial node updates own dataunit - time_slots_taken = 0 - if dataunit_id in self.nodes[node_identity].dataunits_ids: - time_slots_taken += 1 + # only first node is taken at random + node_identity = random.randint(0, len(self.nodes) - 1) + self.time_slots_taken = 0 + + # if dataunit_id in self.nodes[node_identity].dataunits_ids: + # self.time_slots_taken += 1 - self.controller.message_broadcast([node_identity], []) + #self.controller.message_broadcast([node_identity], []) + labels = {k.identity: k.identity for k in self.nodes} + new_neighbors = [] nodes_processed = set([node_identity]) + + neighbors = self.graph.neighbors(node_identity) + + nodes_processed.update(set(neighbors)) + self.time_slots_taken += 1 + while len(nodes_processed) < len(self.nodes): - time_slots_taken += 1 - neighbors = self.nodes[node_identity].neighbors - # assume now that go to each node takes 1 ts, broadcasting parallel - time_slots_taken += 1 - # assume that each node is updating itself also for 1 ts - time_slots_taken += 1 - nodes_processed.update(set(neighbors)) - self.controller.message_broadcast(list(nodes_processed), []) - node_identity = random.randint(0, len(neighbors)) + # ноды должны тоже выбираться параллельно, а не только одна, должны передавать сообщение + # ВСЕ соседи ПАРАЛЛЕЛЬНО + for i in neighbors: + new_neighbors.extend(self.graph.neighbors(i)) - return time_slots_taken + nodes_processed.update(set(new_neighbors)) - def track_delivery_time(self): - pass + self.time_slots_taken += 1 + + neighbors.clear() + neighbors = new_neighbors[:] + new_neighbors.clear() + + # self.controller.draw_graph( + # self.graph, labels, f'{self.time_slots_taken}-{self.diameter}') + + def get_delivery_time(self): + """Useful for interactive mode now""" + return self.time_slots_taken def track_replicas_on_nodes(self): + """Useful for interactive mode now""" pass def represent_current_state(self): + """Useful for interactive mode now""" pass diff --git a/dds_simulation/graphs/extrapolation.py b/dds_simulation/graphs/extrapolation.py deleted file mode 100644 index 8a73c04..0000000 --- a/dds_simulation/graphs/extrapolation.py +++ /dev/null @@ -1,33 +0,0 @@ -import os -from uuid import uuid4 - -from matplotlib import pyplot - -from dds_simulation.conf.default import PROJECT_ROOT - - -def draw_extrapolation(x_vector, y_vector, partitions_number): - pyplot.figure() - pyplot.ylim(0,1) - pyplot.ylabel('I(U)') - - pyplot.plot(x_vector, y_vector, color='b', linewidth=3.0) - - path = os.path.join(PROJECT_ROOT, 'results', - '{}-consistent-partitions-inconsistency'.format( - partitions_number)) - pyplot.savefig(path) - - -def draw_probability_extrapolation(x_vector, y_vector, partitions, - nodes_number, average): - pyplot.figure() - pyplot.ylim(0, 1) - pyplot.ylabel('I({}) = {}'.format(partitions, average)) - pyplot.plot(x_vector, y_vector, color='b') - - path = os.path.join(PROJECT_ROOT, 'results', - '{}-consistent-partitions-probability-{}-nodes-{}'.format( - partitions, nodes_number, uuid4().hex)) - pyplot.savefig(path) - diff --git a/dds_simulation/start_experiment.py b/dds_simulation/start_experiment.py index dddf780..11e08c0 100644 --- a/dds_simulation/start_experiment.py +++ b/dds_simulation/start_experiment.py @@ -1,21 +1,48 @@ +import random + +import networkx from dds_simulation.conf import default from dds_simulation.visualisation import graph_building -from dds_simulation.visualisation import graph_control, extrapolation + from dds_simulation.experiments import simulation from dds_simulation.experiments import consistent_partitions +from dds_simulation.visualisation.extrapolation import draw_function + + +def _initiate_dds(distribution, dataunits_number): + degree = random.randint(2, 30) // 2 * 2 + nodes = degree * 7 + graph = graph_building.form_graph(nodes, degree) + + try: + return simulation.DDSMessaging(graph, distribution, + dataunits_number) + except networkx.exception.NetworkXError: + return _initiate_dds(distribution, dataunits_number) if __name__ == '__main__': nodes = int(default.parameter('topology', 'nodes')) + edges = int(default.parameter('topology', 'links')) degree = int(default.parameter('topology', 'degree')) - graph = graph_building.form_graph(nodes, degree) + experiments = int(default.parameter('experiment', 'experiments')) + dataunits_number = int(default.parameter('dataunit', 'dataunits')) distribution = default.parameter('dataunit', 'distribution') + x_vector = [] + y_vector = [] + + + for i in range(experiments): + + dds_service = _initiate_dds(distribution, dataunits_number) + dds_service.start_experiment() - dds_service = consistent_partitions.ConsistentExperiment( - graph, None, distribution, dataunits_number) - dds_service.start_experiment() + x_vector.append(dds_service.time_slots_taken) + y_vector.append(dds_service.diameter) + draw_function(x_vector, y_vector, 'T_c', 'D(G)', + f'{experiments}-consistency-convergence') diff --git a/dds_simulation/visualisation/extrapolation.py b/dds_simulation/visualisation/extrapolation.py index 4937a40..7e967f0 100644 --- a/dds_simulation/visualisation/extrapolation.py +++ b/dds_simulation/visualisation/extrapolation.py @@ -1,4 +1,5 @@ import os +from datetime import datetime from uuid import uuid4 from matplotlib import pyplot @@ -29,4 +30,31 @@ def draw_probability_extrapolation(x_vector, y_vector, partitions, path = os.path.join(PROJECT_ROOT, 'results', '{}-consistent-partitions-probability-{}-nodes-{}'.format( partitions, nodes_number, uuid4().hex)) - pyplot.savefig(path) \ No newline at end of file + pyplot.savefig(path) + + +def draw_function(x_vector, y_vector, x_label, y_label, filename): + pyplot.figure() + + pyplot.xlabel(x_label) + pyplot.ylabel(y_label) + print("X >>> ", x_vector) + print("Y >>>> ", y_vector) + # 'c' + # cyan + # 'm' + # magenta + # 'y' + # yellow + # 'k' + # black + # 'w' + # white + pyplot.plot(x_vector, y_vector, 'o', color='r', linewidth=2.0) + x_line = [x_vector[i] for i in range(0, len(x_vector)) + if x_vector[i] == y_vector[i]] + y_line = x_line[:] + pyplot.plot(x_line, y_line, color='k', linewidth=2.0) + path = os.path.join(PROJECT_ROOT, 'results', + f'{filename}.png') + pyplot.savefig(path) diff --git a/dds_simulation/visualisation/graph_building.py b/dds_simulation/visualisation/graph_building.py index 5032e12..2fcda7b 100644 --- a/dds_simulation/visualisation/graph_building.py +++ b/dds_simulation/visualisation/graph_building.py @@ -1,15 +1,41 @@ import multiprocessing -from multiprocessing import Queue +import random +from time import time from matplotlib import pyplot as plt from matplotlib.animation import FuncAnimation import networkx as nx -def form_graph(nodes_number, degree=5): +def generate_data(): + nodes = random.randint(5, 20) + degree = random.randint(5, 15) + if nodes * degree % 2 == 0 and degree < nodes: + return nodes, degree + return generate_data() + + +def draw_graph(graph, labels, filename): + plt.figure() + nx.draw(graph, nx.circular_layout(graph)) + nx.draw_networkx_labels(graph, nx.circular_layout(graph), + labels=labels, + font_size=16) + + plt.savefig(f"{filename}.png") + + +def form_graph(nodes_number, degree): return nx.random_regular_graph(degree, nodes_number) +def form_gdn(nodes, edges): + return nx.gnm_random_graph(nodes, edges) + +def form_gnp(nodes, edges): + return nx.fast_gnp_random_graph(nodes, edges) + + class Animation(object): """Animates graph""" @@ -18,6 +44,7 @@ class Animation(object): def __init__(self, queue, graph, position): self.queue = queue self.graph = graph + self.graph_position = position for node in graph.nodes(): self.labels[node] = node @@ -62,9 +89,10 @@ def redraw_graph(self, i): def plot_graph(animation): fig = plt.figure() - ani = FuncAnimation(fig, animation.redraw_graph, + ani = FuncAnimation(fig, animation.draw_graph, init_func=animation.initiate, interval=200) + filename = f"{time()}-graph.png" plt.show() print(multiprocessing.current_process().name,"starting plot show process") #print statement preceded by true process name diff --git a/dds_simulation/visualisation/graph_control.py b/dds_simulation/visualisation/graph_control.py index 4548f9e..e14af31 100644 --- a/dds_simulation/visualisation/graph_control.py +++ b/dds_simulation/visualisation/graph_control.py @@ -1,12 +1,10 @@ from multiprocessing import Process from multiprocessing import Queue -import random import networkx as nx -from PyQt5.QtCore import pyqtSignal -from PyQt5.QtCore import QObject -from dds_simulation.visualisation.graph_building import Animation +from dds_simulation.visualisation.extrapolation import draw_function +from dds_simulation.visualisation.graph_building import Animation, draw_graph from dds_simulation.visualisation.graph_building import plot_graph @@ -19,10 +17,17 @@ class GraphController(object): def __init__(self, graph): + self.graph = graph + + def animate(self): + self.queue = Queue() - self.queue.put_nowait([5]) + import random + random_node = random.randint(1, graph.number_of_nodes()) + self.queue.put_nowait([random_node,]) - animation = Animation(self.queue, graph, nx.circular_layout(graph)) + animation = Animation(self.queue, self.graph, nx.circular_layout( + self.graph)) animator = Process(target=plot_graph, name="Graph Animator", args=(animation,)) animator.start() @@ -30,3 +35,9 @@ def __init__(self, graph): def message_broadcast(self, nodes, links): self.queue.put_nowait(nodes) + + def draw_graph(self, graph, labels, filename): + draw_graph(graph, labels, filename) + + def draw_graphics(self, *args, **kwargs): + draw_function(*args, **kwargs) diff --git a/etc/datastore.ini b/etc/datastore.ini index eba33e9..dabca4d 100644 --- a/etc/datastore.ini +++ b/etc/datastore.ini @@ -24,7 +24,7 @@ distribution = random [experiment] -experiments = 100 +experiments = 1000 sub_experiments = 50 diff --git a/models/dds-class-diagram.uxf b/models/dds-class-diagram.uxf new file mode 100644 index 0000000..cdb1574 --- /dev/null +++ b/models/dds-class-diagram.uxf @@ -0,0 +1,141 @@ + + + 10 + + UMLClass + + 450 + 270 + 270 + 80 + + DDSMessaging +-- +- simulates a datastore +- controls messages broadcasting +- does necessary calculations + + + + UMLClass + + 270 + 400 + 150 + 90 + + Visualisation +-- +- animate_graph +- draw_graph +- draw_graphics + + + + UMLClass + + 120 + 270 + 240 + 80 + + ConsistentPartitions +-- +- runs experiment for partitions + for a given datastore +- does necessary calculations + + + + UMLClass + + 280 + 120 + 220 + 110 + + DDS +-- +Base class for all +simulations +-- +- initialize common instances + for experiments + + + + Relation + + 180 + 170 + 120 + 120 + + lt=<<- + 100.0;10.0;10.0;10.0;10.0;100.0 + + + Relation + + 490 + 170 + 110 + 120 + + lt=<<- + 10.0;10.0;90.0;10.0;90.0;100.0 + + + UMLClass + + 460 + 400 + 170 + 30 + + GraphControlling + + + + Relation + + 130 + 340 + 160 + 160 + + lt=<<. +calls +draw_graphics + 140.0;130.0;10.0;130.0;10.0;10.0 + + + Relation + + 510 + 340 + 140 + 80 + + lt=<<. +call to control +actions on graph +to visualize + 10.0;60.0;10.0;10.0 + + + Relation + + 410 + 420 + 180 + 110 + + lt=<<. +call +animate_graph, +draw_graph and +draw_graphics + 10.0;50.0;160.0;50.0;160.0;10.0 + + diff --git a/papers/images/100-consistency-convergence.png b/papers/images/100-consistency-convergence.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c9e8be7a5dd9f02b5d8f46a64c67856950ed26 GIT binary patch literal 13173 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 Q6pX~qoYGOxRq~*siMfVi+vY@ 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%0Aw=Z{L@5$B^6m<{0D|G>*_z-1hP+ub>R< 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 literal 0 HcmV?d00001 diff --git a/papers/index.aux b/papers/index.aux index dbae15f..006889b 100644 --- a/papers/index.aux +++ b/papers/index.aux @@ -1,31 +1,36 @@ \relax -\citation{?} -\citation{?} -\citation{bib:c_ts} -\citation{?} +\citation{bib:brewer} +\citation{bib:acid_vs_base} +\citation{bib:tanenbaum} +\citation{bib:prob_approach} \@writefile{toc}{\contentsline {title}{Distributed Datastores: Consistency Metric for Distributed Datastores}{1}} \@writefile{toc}{\authcount {2}} \@writefile{toc}{\contentsline {author}{Kyrylo Rukkas\and Galyna Zholtkevych}{1}} \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}} \newlabel{sec:intro}{{1}{1}} -\citation{?} -\citation{?} +\citation{bib:prob_approach} \@writefile{toc}{\contentsline {section}{\numberline {2}Evolving consistency metric mathematical model: Derived metrics}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Case Study}{2}} -\newlabel{sec:experiments}{{2.1}{2}} +\newlabel{sec:model}{{2}{2}} \newlabel{ex:partitions}{{1}{3}} \newlabel{eq:metric}{{1}{3}} -\newlabel{ex:metric}{{2}{3}} -\@writefile{toc}{\contentsline {section}{\numberline {3}One Metric to Assess Consistency of Data}{6}} -\@writefile{toc}{\contentsline {section}{\numberline {4}Simulation Model to Assess Inconsistency Ratio of Data}{6}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Consistency probability}{6}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Convergence time complexity}{7}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Replica's actuality research}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {5}Remained studying}{7}} -\newlabel{sec:experiments}{{5}{7}} -\bibcite{bib:c_ts}{1} -\bibcite{bib:andrews}{2} -\@writefile{toc}{\contentsline {section}{\numberline {6}Inconsistency metric in various kinds of algorithms spreading replicas across DDS}{8}} -\@writefile{toc}{\contentsline {section}{\numberline {7}Different topologies}{8}} -\@writefile{toc}{\contentsline {section}{\numberline {8}Future work}{8}} -\@writefile{toc}{\contentsline {section}{\numberline {9}Conclusion}{8}} +\newlabel{ex:metric}{{2}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Convergence time complexity}{4}} +\newlabel{sec:complexity}{{3}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Case Study}{5}} +\newlabel{sec:experiments}{{4}{5}} +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 276}}{8}} +\citation{bib:github_dds} +\@writefile{toc}{\contentsline {section}{\numberline {5}Simulation Model to Assess Inconsistency Ratio of Data}{9}} +\newlabel{sec:simulation}{{5}{9}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 294}}{9}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{9}} +\citation{bib:c_ts} +\bibcite{bib:brewer}{1} +\@writefile{toc}{\contentsline {section}{\numberline {7}Future work}{10}} +\bibcite{bib:prob_approach}{2} +\bibcite{bib:acid_vs_base}{3} +\bibcite{bib:tanenbaum}{4} +\bibcite{bib:andrews}{5} +\bibcite{bib:github_dds}{6} +\bibcite{bib:c_ts}{7} diff --git a/papers/index.tex b/papers/index.tex index b45fa14..b53d5bb 100644 --- a/papers/index.tex +++ b/papers/index.tex @@ -27,89 +27,104 @@ \end{abstract} \section{Introduction}\label{sec:intro} -In the epoch of popular usage of IoT, Big Data, Cloud Computing, the data become more and more -important thing and require larger, more reliable storage. This leads to increasing size of distributed -storages. They become bigger and bigger and require the huge network across all the distributed nodes. -But there are several unsolved problems using large distributed datastores and some of them are strongly related -to the CAP-theorem. Given that the ACID strategy can not be supported for systems of this class \cite[{\color{red} references to the CAP-conjecture})]{?}, mechanisms for delivering data across distributed storage still lack fast consistency convergence, reliability and tolerance to network partitions. -{\color{red} -Provide facts for this problem. (links etc.) -} - - -Supporting replicas of an evolving distributed system up-to-dates is very important but hard problem. Thus we need to provide a set of indicators of main characteristics of the distributed data store to assess the risk of a wrong decision because of the data inconsistency or unavailability. -In this paper, we focus our study on the problem of estimating data consistency in a distributed data store. - -Given that in a distributed data store consistency of replicas may only be eventually \cite[{\color{red} you need to refer to the corresponding papers}]{?}, we need the answering the following questions -\begin{enumerate} -\item -How to resolve conflicts between replicas? -This problem is raised and partially solved in \cite{bib:c_ts}, where algorithm with timestamps on replicas is proposed. -But merging updated replicas, it takes the response time, so consistency convergence decreases. -In the paper further sections we will investigate faster consistency convergence. -\item -Is it always possible to ensure the convergence to the consistency of data and by what means can this be achieved? -This depends on many factors including network topology, -network failures, links bandwidth, bottlenecks in network overall etc \cite[{\color{red} links are needed}]{?}. -\item -What methods can be used to effectively solve the broadcast storm problem? -This is well-known problem and it has the solution in \cite[{\color{red} links are needed}]{?}. -\item How do loops when broadcasting data be eliminated? -This is what networking algorithms aimed to solve \cite[{\color{red} links are needed}]{?}. -\end{enumerate} - -\section{Evolving consistency metric mathematical model: Derived metrics} - -In the previous paper {\color{red} Link to paper} we considered the metrics for all three elements of CAP-theorem. +In the epoch of popular usage of IoT, Big Data, Cloud Computing, the data become more and more important thing and require larger, more reliable storage. This leads to increasing size of distributed storages. They become bigger and bigger and require the huge network across all the distributed nodes. +But there are several unsolved problems using large distributed datastores and some of them are strongly related to the CAP-theorem. +Given that the ACID strategy can not be supported for systems of this class \cite{bib:brewer}, mechanisms for delivering data across distributed storage still lack fast eventual consistency convergence, reliability and tolerance to network partitions. + +So let's concentrate on efficient consistency model - BASE (Basically Available, Soft State, Eventual Consistency) \cite{bib:acid_vs_base} +Mainly this paper is devoted to eventual consistency. Let us remind what eventual consistency is referencing to well-known book \cite{bib:tanenbaum}: the form of consistency is called eventual if no updates take place for a long time and all replicas will gradually become consistent. + +Supporting replicas of an evolving distributed system up-to-date is very important but hard problem. Thus we need to provide a set of indicators of main characteristics of the distributed data store to assess the risk of a wrong decision because of the data inconsistency or unavailability. +In this paper, we focus our study on the problem of estimating data consistency in a distributed data store. Usually, in the datastore consistency is defined as binary for now. We want to demonstrate the useful concept defining of the consistency as binary value. +For that instead of binary metric for eventual consistency/inconsistency we propose stochastic metric. + +Also we would like to know if it is possible to find the optimal interval between writable operations occuring on distributed systems so that system can eventually be consistent in that interval. +In the section \ref{sec:model} we develop consistency model defined in the previous paper \cite{bib:prob_approach} and define the inconsistency metric for a distributed datastore. +In section \ref{sec:experiments} we conduct experiments that prove the correctness of metric defined in previous section. +In section \ref{sec:simulation} we provide diagrams of the implemented application that we use for carrying out experiments. +In section \ref{sec:complexity} section we approximate the time that is needed for consistency convergence - state of the distributed system when all nodes have consistent replicas. + +%Given that in a distributed data store consistency of replicas may only be eventually \cite[{\color{red} you need to refer to the corresponding papers}]{?}, we need the answering the following questions +%\begin{enumerate} +%\item +%How to resolve conflicts between replicas? +%This problem is raised and partially solved in \cite{bib:c_ts}, where algorithm with timestamps on replicas is proposed. +%But merging updated replicas, it takes the response time, so consistency convergence decreases. +%In the paper further sections we will investigate faster consistency convergence. +%\item +%Is it always possible to ensure the convergence to the consistency of data and by what means can this be achieved? +%This depends on many factors including network topology, +%network failures, links bandwidth, bottlenecks in network overall etc \cite[{\color{red} links are needed}]{?}. +%\item +%What methods can be used to effectively solve the broadcast storm problem? +%This is well-known problem and it has the solution in \cite[{\color{red} links are needed}]{?}. +%\item How do loops when broadcasting data be eliminated? +%This is what networking algorithms aimed to solve \cite[{\color{red} links are needed}]{?}. +%\end{enumerate} + +\section{Evolving consistency metric mathematical model: Derived metrics}\label{sec:model} + +In the previous paper \cite{bib:prob_approach} we considered the metrics for all three elements of CAP-theorem. Now our paper is mainly devoted to consistency question and how fast it can converge. -From previous paper we are taking the developed mathematical model. -(Refresh model here, specify only needed elements - nodes, dataunits, replicas) -$N$ - .... -$N(d)$ - the set of nodes that are having given dataunit $d$. -$l(N(d))$ - the number of nodes in datastore that are having given dataunit. +From that paper we are taking the developed mathematical model and expand it with elements, needed for the current research. -Let us continue forming this model. -Our mathematical model for consistency $C$ will be able to define the time which distributed datastore require -to become fully consistent. Also let's denote $IC$ as a value calculated by probabilistic formula for the number of compare operations that should be done for each pair of nodes to find inconsistency. -Obviously, if the storage is consistent, the number of operations will be the maximum. It will allow to calculate the upper, lower boundary, average number of steps could be taken to find if the system is consistent or not. -In this paper our mathematical model for consistency $C$ will be able to define inconsistency degree in a given datastore (see Case study subsection), and afterwards will focus on time which distributed datastore require to become fully consistent and some other helpful metrics (see subsections ...) +We specify it as a tuple $(N, L, \partial,D, r)$, where \\ +\begin{tabular*}{\textwidth}{cp{0.5cm}p{0.8\textwidth}} +$N$&& is a finite set of nodes of a distributed datastore; \\ +$L$&& is a finite set of links of a distributed datastore; \\ +$\partial:L\rightarrow 2^N$&& is a mapping that associates each link with two nodes that it binds;\\ +$D$&& is a finite set of stored data units;\\ +$r:D\rightarrow 2^N$&& is a mapping that associates each data unit $d$ with a subset of nodes +that store its replica; \\ -\subsection{Case Study}\label{sec:experiments} +$N_d$&& is a finite set of nodes that are having given dataunit $d$; \\ +$l(N_d)$&& is a number of nodes in datastore that are having given dataunit; \\ +$n_c$&& is a number of nodes in a subset of $N_d$ where all nodes have the same replica. +\end{tabular*} -Let's denote $IC$ as a value calculated by probabilistic formula for the number of compare operations that should be done for each pair of nodes to find inconsistency. -Obviously, if the storage is consistent, the number of operations will be the maximum. -Then the model will allow to calculate the upper, lower boundary, average number of steps could be -taken to find if the system is consistent or not. -We are thinking that having this formula will help us to eventually fully specify the mathematical model for consistency, so let it be one of mathematical model components. Let's claim some rules that can help to investigate -consistency. +So we expanded the model now with two last assumptions. +Our mathematical model for inconsistency $IC$ will be able to define the inconsistency state of distributed datastore and the time it requires to become fully consistent. +For this metric we created the probabilistic event taking two random nodes from the set $N_d$, they can be consistent with some probability. Carrying out this event many times, we can obtain the average probability of that two nodes will be consistent. -{\color{red} Prove that having random topology the best algorithm to allocate masters and slaves -in the next manner: each master has those neighbors-slaves that are closest to it comparing -other master nodes.} -Based on proposed hypothesis we want to check ... . -So the probability of that two nodes taken at random are from consistent subset is +Thus, we have the following sample space: -$p = \frac{n_c}{l(N_d)} * \frac{n_c - 1}{l(N_d) - 1} = \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)}$ where $n_c$ is the number of consistent nodes in the system at initial time $t$ (when we block the system and start investigating). +\[\Omega = \{0, 0, 1, 0, 1, 0, 1 , 1, 0, 1, 1, ....\}, \], -Obviously, inconsistency probability then: +where $0$ denotes the event when two nodes are consistent and $1$, on the contrary, when two nodes are inconsistent. + +Also let's claim that $p$ is the probability that two nodes are consistent, and +$q = 1 -p$ - the probability that two nodes are inconsistent. -$p_{ic} = 1 - p = 1 - \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)}$ +In this paper our mathematical model for inconsistency $IC$ will be able to define inconsistency degree in a given datastore (see Example \ref{ex:metric} and Section \ref{sec:experiments}), and afterwards will focus on time which distributed datastore require to become fully consistent and some other helpful metrics (see section \ref{sec:complexity}) + +As marked above, we introduce the stochastic metrics for inconsistency/consistency instead of binary ones. +We carry out experiment, we will "freeze" the simulated distributed datastore and time of that "freezing" we call time $t$. Thus we will be able to investigate the current state of the system. + +Let's denote $IC$ as a value calculated by probabilistic formula . +We are thinking that having this formula will help us to eventually fully specify the mathematical model for consistency, so let it be one of mathematical model components. +So the probability of that two nodes taken at random are from consistent subset is + +\[p_c = \frac{n_c}{l(N_d)} \cdot \frac{n_c - 1}{l(N_d) - 1} = \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)},\] + where $n_c$ is length of consistent subset in the system at time $t$. +Obviously, inconsistency probability then: +\[p_{ic} = 1 - p = 1 - \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)}.\] Taking into account that minimum number of consistent nodes will be equal to 1, and the maximum number of consistent nodes is equal to $l(N_d)$, we have following consequences: \begin{itemize} -\item The system is fully consistent if $p = l(N_d) / l(N_d) = 1$ -\item The lower boundary for consistency probability is $1 / l(N_d)$ +\item Two nodes are inconsistent if $p_{ic} = 1$ +\item Two nodes are consistent if $p_{ic} = 0$ \end{itemize} -We developed the consistency formula for two nodes. Let's now extend it to more general one. +We developed the inconsistency formula for two nodes. Let's now extend it to more general one. We still suppose that a data unit is represented by replicas on $N_d$ servers. Let's denote it as temporary $N$. Let we have $K$ classes of mutually consistent replicas. Then we denote by $N_k$ a number of replicas in $k^\mathrm{th}$ consistency class ($1\leq k0$ for all $k=1,\ldots,K$ and $N=N_1+\ldots+N_K$. Such representations $N=N_1+\ldots+N_K$ are called integer partitions. + \noindent Thus, in this case any integer partition describes some inconsistency state. \begin{example}\label{ex:partitions} @@ -124,9 +139,11 @@ \subsection{Case Study}\label{sec:experiments} \end{example} Taking into account this consideration we define inconsistency metric for a data unit in the term of the corresponding integer partition. -More details, let us suppose that the studied data unit $u$ is represented by $N$ replicas, which are being described by the integer partition $N=N_1,\ldots,M_K$ then the inconsistency metric $I(u)$ is defined by the formula +As we denoted above in the section \ref{sec:model}, we suppose that the studied data unit $d$ is represented by $N$ replicas, which are being described by the integer partition $N=N_1,\ldots,M_K$. + +Then the inconsistency metric $I(d)$ is defined by the formula \begin{equation}\label{eq:metric} - I(u)=1-\sum_{k=1}^K\dfrac{N_k(N_k-1)}{N(N-1)}. + I(d)=1-\sum_{k=1}^K\dfrac{N_k(N_k-1)}{N(N-1)}. \end{equation} \begin{example}\label{ex:metric} @@ -135,164 +152,275 @@ \subsection{Case Study}\label{sec:experiments} \begin{center} \begin{tabular}{lclcl} $I(5)=0$ & & $I(4+1)=\frac{2}{5}$ & & $I(3+2)=\frac{3}{5}$\\ - $I(3+1+1)=\frac{7}{10}$ &\hspace*{10pt}& $I(2+2+1)=\frac{3}{4}$ + $I(3+1+1)=\frac{7}{10}$ &\hspace*{10pt}& $I(2+2+1)=\frac{4}{5}$ &\hspace*{10pt}& $I(2+1+1+1)=\frac{9}{10}$\\ $I(1+1+1+1+1)=1$ \end{tabular} \end{center} -The meaning of $I(u)$ is the value of probability to establish the fact of inconsistency by the way of comparison two randomly chosen replicas. +The meaning of $I(d)$ is the value of probability to establish the fact of inconsistency by the way of comparison two randomly chosen replicas. \end{example} -Example~\ref{ex:metric} demonstrates that the proposed metric is equal to $0$ for the absolutely consistent data unit (the case 5) and is equal to $1$ for the absolutely inconsistent data unit (the case 1+1+1+1+1). +Example~\ref{ex:metric} demonstrates that the proposed metric is equal to $0$ for the absolutely consistent data unit (the case 5) and is equal to $1$ for the absolutely inconsistent data unit (the case 1+1+1+1+1) in the subset $N_d$. + + +\section{Convergence time complexity}\label{sec:complexity} + + +Now we are interested to calculate the time that can be taken for consistency convergence. +Let's denote as $T_c$ time for consistency convergence (time that is needed for all the system to become consistent). +Let we have the trivial network where all links have capacity 1. Thus, as the input we have the connected graph +$G$ with set of nodes $N$ and set of edges $E$. + +And weight for each edge: +\[w(e) = 1 ,\ \forall e \in E .\] + + +Let's imagine the nodes $n_1$ and $n_2$ that are at the largest distance each from other. So we can count that the time of delivering replica between $n_1$ and $n_2$ is the shortest path from $n_1$ to $n_2$. Extrapolating this to all the system and taking into account that in the distributed datastore nodes are broadcasting each to other in parallel, we obtain the upper boundary of $T_c$ is the maximum of shortest paths in the worst case. It is well-known that such maximum is diameter of the graph: + + +$T_c = diameter(G)$. + + +Let's complicate the system introducing the different capacity for links in distributed datastore. +That means that now our graph $G$ is weighted and weight for an edge is: + +\[w(e) = c ,\ c\in\mathbb{N} \, \forall e \in E , \] + +where $c$ is the capacity for the edge $e$. + +Then the diameter is the path: -This study had been checked by the following experimentation: we implemented a code that allows to test the accuracy of the inconsistency model described above. Partitions probability intervals for different partitions are demonstrating that the formulae is correct. To be more intuitive we took the same number of nodes and same partitions. -It is obviously that we do not have exact matching, because the experiment is based on number of iterations where two random nodes are taken from a set of nodes and we count them consistent if they are in the same partition. -It is also obvious that for one consistent partition inconsistency will be equal $0$ and for maximum number of consistent partitions the inconsistency will be equal to $1$. +$P = [e_1....e_n]$, where $e_i$ has own weight. + + +Then + +\[T_c = \sum_1^{n}w_i ,\] + +where $w_i$ is the weight of edge $e_i$ of the path $P$. + + +Based on this section, we can assume that having datastore with reliable links, for full continuous consistency it is enough to have such topology for distributed datastore where time frequency of writable operations will be no greater than diameter of the graph. +\section{Case Study}\label{sec:experiments} + +The study in the previous section \ref{sec:model} had been checked by the following experimentation: +we implemented a code that allows to test the accuracy of the inconsistency metric. Probability intervals for different partitions are demonstrating that the formulae is correct - values obtained are around values obtained theoretically. To be more intuitive we took the same number of nodes and same partitions. + +It is obviously that we do not have exact matching, because the experiment is based on number of iterations where two nodes are taken from a given set of nodes randomly, but all we need is that value should vary slightly around theoretical value. Look at the pictures below: + + +{\color{red} Desirsbly Introduce not only I average, but I max also - worst case for each graph.} \begin{figure} \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-consistent-partition.png}\hfill \end{subfigure} +\begin{subfigure}{0.5\linewidth} +\centering\includegraphics[scale=0.4]{images/1-1-1-1-1-consistent-partitions-probability.png} +\end{subfigure} +\end{figure} + +Firstly, it can be seen that for one consistent partition $I(d)$ is equal to $0$ and when the system is fully inconsistent $I(d)$ is equal to $1$. +\begin{figure} + \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/2-3-consistent-partitions-probability.png}\hfill \end{subfigure} \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-4-consistent-partitions-probability.png} \end{subfigure} + +Let's compare now the situation when we have two consistent partitions: the set which contains 2 and 3 nodes that consistent in the own subset, and the set with 4 and 1-length consistent subsets. + +Then we can easily see that: +\[I(3,2) = 1 - \frac{3 \cdot 2}{5 \cdot 4} - \frac{2 \cdot 1}{5 \cdot 4} = \frac{3}{5} ,\] +and +\[I(4,1) = 1 - \frac{4 \cdot 3}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{2}{5} ,\] +\end{figure} + +Following this procedure for three consistent partitions in $N_d$: + +\[I(3,1,1) = 1 - \frac{3 \cdot 2}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{7}{10} ,\] + +and +\[I(2,2,1) = 1 - \frac{2 \cdot 1}{5 \cdot 4} - \frac{2 \cdot 1}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{4}{5} .\] + + +\begin{figure} \begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-2-2-consistent-partitions-probability.png} +\centering\includegraphics[scale=0.4]{images/1-1-3-consistent-partitions-probability.png} \end{subfigure} \begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-1-3-consistent-partitions-probability.png} +\centering\includegraphics[scale=0.4]{images/1-2-2-consistent-partitions-probability.png} \end{subfigure} + +\end{figure} +And the final one: +\[I(2,1,1,1) = 1 - \frac{2 \cdot 1}{5 \cdot 4} - 3\cdot\frac{1 \cdot 0}{5 \cdot 4} = \frac{9}{10} .\] +\begin{figure} \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-1-1-2-consistent-partitions-probability.png} \end{subfigure} \end{figure} -\newpage +So, we had easily shown on a simple subset, that our inconsistency metric value corresponds to theoretical one. -\includegraphics[scale=0.4]{images/1-1-1-1-1-consistent-partitions-probability.png} -\section{One Metric to Assess Consistency of Data} -{\color{red} This metric is derived and studied in case study, so this subsection is not needed anymore} -\section{Simulation Model to Assess Inconsistency Ratio of Data} -{\color{red} Should come in the end as annex} -\subsection{Consistency probability} +Now we present the graphic that demonstrates the verity of that claim we did in previous section about that +consistency convergence time $T_C$ for graph $G$ will be no greater than diameter of $G$. +To be more intuitive, we carried out the set of experiments on our simulation model: having simulated distributed datastore, we easily could run the imitation of one message broadcasting through the datastore and calculate the number of time slots it is taking in the realtime. We have done it for graph with each edge of capacity 1. Below there are graphics for 100, 200, 1000 experiments. +We draw graphics in the following manner: obtain the diameter of graph $G$ (ordinates) and calculated by the simulation $T_c$ (axis). We can easily see that either we have the line demonstrating that $T_C = D(G)$, or +points that are showing that $T_C < D(G)$. -We want to calculate the maximum number of compare operations to find inconsistency. Let us imagine that the datastore is fully consistent. This will require comparing all nodes with each other. +\begin{figure}\label{pic:diagram} +\begin{subfigure}{0.5\linewidth} +\centering\includegraphics[scale=0.4]{images/100-consistency-convergence.png} +\end{subfigure} +\begin{subfigure}{0.5\linewidth} +\centering\includegraphics[scale=0.4]{images/200-consistency-convergence.png} +\end{subfigure} +\begin{subfigure}{0.5\linewidth} +\centering\includegraphics[scale=0.4]{images/1000-consistency-convergence.png} +\end{subfigure} +\end{figure} +\newpage -We also assume that one of two nodes to be compared are taken randomly except of already taken ones. So the algorithm is the following at first iteration we take two nodes at random, put out one of them if they are consistent and continue comparing with randomly taken nodes. Once we have two inconsistent nodes, the comparing ends. +\section{Simulation Model to Assess Inconsistency Ratio of Data}\label{sec:simulation} -We have two types of events in such a system: two chosen nodes are consistent or two nodes are inconsistent. -Assume that $p$ is the probability that two nodes are consistent, and -$q = 1 -p$ - the probability that two nodes are inconsistent. -$l(N_d)$ -Then our sample space looks like: +To carry out our experiments, we needed to implement the simulation model that will do experiment and calculate all needed values. This model is implemented as a computer program in Python language. We are thining that it is not valuable to present all the code of the program (however it is available at github page \cite{bib:github_dds}), but we count that it is useful to present the short class diagram of the project. +Look at the picture \ref{pic:diagram} below. -$\Omega = \{q, qp, qp^2, ..., qp^n\}$ +\begin{figure}\label{pic:diagram} +\begin{subfigure}{0.5\linewidth} +\centering\includegraphics[scale=0.4]{images/dds-class-diagram.png} +\end{subfigure} +\end{figure} -Then the number of comparing operations is: -$\vert\Omega\vert = \sum_{i=0}^{l(N_d)-1}qp^i$ +%\section{Replica's actuality research} +% +%We want to calculate the maximum number of compare operations to find inconsistency. Let us imagine that the datastore is fully consistent. This will require comparing all nodes with each other. +% +%Then our sample space looks like: +% +%$\Omega = \{q, qp, qp^2, ..., qp^n\}$ +% +%Then the number of comparing operations is: +% +%$\vert\Omega\vert = \sum_{i=0}^{l(N_d)-1}qp^i$ +%\\ +% +%Obviously, if the storage is consistent, the number of operations will be the maximum. {\color{red}expand - It will allow to calculate the upper, lower boundary, average number of steps could be taken to find if the system is consistent or not.} +%Obviously, if the storage is consistent, the number of operations will be the maximum. +%Then the model will allow to calculate the upper, lower boundary, average number of steps could be +%taken to find if the system is consistent or not. +% +% +%From this formulae we have next constraints: +%\begin{itemize} +%\item The system is fully consistent if $\vert\Omega\vert = l(N_d)-1$ +%\item The system is inconsistent when $1 <= \vert\Omega\vert <= l(N_d) -2$ +%\end{itemize} +% +%Thus, in the end probability that the node is consistent at time t will be equal to number of consistent nodes (nodes with newest replica versions) $/ l(N_d)$, where $l(N_d)$ is the current length of subset $N_d$ (taking in account that each iteration we put put one node) +% +%Can be combined with number of compare operations. +%Let's also measure the number of steps to find the degree of consistency at a time $t$. +%Our algorithm described above is complemented by that fact that if we find inconsistent nodes, +%we are taking the node with latest replica timestamp. At each node meeting replica version equal to current maximum, we accumulate the count of such nodes. The count is dropped when the new current maximum is found. This is actually the algorithm of search of maximum number in a sequence and has known complexity - $O(N)$ comparisons. +%Then, in our case it is $O(l(N_d))$ steps. -From this formulae we have next constraints: -\begin{itemize} -\item The system is fully consistent if $\vert\Omega\vert = l(N_d)-1$ -\item The system is inconsistent when $1 <= \vert\Omega\vert <= l(N_d) -2$ -\end{itemize} -Thus, in the end probability that the node is consistent at time t will be equal to number of consistent nodes (nodes with newest replica versions) $/ l(N_d)$, where $l(N_d)$ is the current length of subset $N_d$ (taking in account that each iteration we put put one node) -\subsection{Convergence time complexity} +\section{Conclusion} +In this paper we have studied the consistency property for distributed datastores. +So thinking how huge distributed datastores could be and having small interval between write operations to a datastore, we can conclude that binary variable loses its utility. +It might be needed to evaluate current inconsistency state of a datastore, to get nodes that are consistent and make a decision based on obtained results. -Now we are interested to calculate the time that can be taken for consistency convergence. -Let it be the trivial network where all links have capacity 1. Then each edge of graph has weight 1. -Let's imagine the nodes that are at the largest distance each from other. In the distributed datastore nodes are -broadcasting each to other in parallel. So the upper boundary of consistency in the worst case is the maximum of -shortest paths. It is well-known that this is diameter of the graph: +Therefore we have proposed stochastic metric instead of binary one considering consistent partitions of a distributed datastore, formed metric for the inconsistency and shown the correctness of the formulae by carrying out experiments, shown when distributed datastore is fully inconsistent and fully consistent, evaluated the upper boundary of time that is taken for consistency convergence in a distributed datastore, taking into account that datastore is reliable, stable and does not have network partitions. -$n_ts = diameter(G)$. +Thus, based on the research of current paper we can make pose following recommendations for those who build the network topology of the distributed datastore: +\begin{itemize} +\item in the case of your datastore is a system with a domination of read operations, it must be sufficient to choose such network topology where frequency of write operations will be no greater than diameter of the graph representing network topology of a distributed datastore; -Let's imagine now the real topology where the network graph topology is weighted. -Let the diameter be the path: +\item if frequency of write operations is grater than diameter of the graph, it may be useful to evaluate current inconsistency state of the graph; +\item if inconsistency state is close to 0 enough for current requirements, it means that there are inconsistent nodes that are far enough to not conflict with new replicas. Thus, developer or administrator of a datastore can choose as source availiable for writing that node that is in consistent list and far enough for inconsistent ones. But for that developer needs to provide such an algorithm for a datastore so that he will be able to obtain the current list of consistent nodes; -$P = [e_1....e_n]$, where $e_i$ has own weight. +\item if still more strict consistency needs to be satisfied and inconsitency state is close enough to 0, a developer or administrator of a datastore can choose as source node for writing the node closest to the source node where previous write operation occurred; +\item if replica's history is not important for requirements, it may be possible to solve the problem fixing conflicts. This problem has been investigated in this paper \cite{bib:c_ts} -Then time taken for consistency to converge is: +\end{itemize} -$\sum_1^{n}w_i$ where $w_i$ is the weight of $i$ edge of the path $P$. +\section{Future work} -\subsection{Replica's actuality research} -Let's also measure the number of steps to find the degree of consistency at a time $t$. -Our algorithm described above is complemented by that fact that if we find inconsistent nodes, -we are taking the node with latest replica timestamp. At each node meeting replica version equal to current maximum, we accumulate the count of such nodes. The count is dropped when the new current maximum is found. This is actually the algorithm of search of maximum number in a sequence and has known complexity - $O(N)$ comparisons. -Then, in our case it is $O(l(N_d))$ steps. +In previous section we described that we considered a lot of useful things for consistency in a distributed datastore. But still the research in this direction need to be continued and we have formed the next goals for the the future research: +\begin{itemize} +\item carry out experiments for inconsistency metric in the worst case; -\section{Remained studying}\label{sec:experiments} +\item complicate a datastore introducing different availability for each node; -Экспериментальное исследование. -1. Смоделировать граф с нодами разной консистентности и вычислить среднее кол-во тайм слотов, которое может быть потрачено на нахождение inconsistency. - to be studied more. Мы вычислили вероятность, а не время consistency convergence. Выполнено на 50% +\item complicate a datastore introducing various network partitions for a datastore; -Привести экспереименты с 2, 3, 4 разбиениями +\item provide an algorithm that will allow to make a decision what is the best approach for a given datastore such that the eventually consistency is satisfied or an approach when inconsistency will not impact on datastore requirements; -2. Показать когда система полностью консистентна - выполнено +\item theory for finding the most actual replica and time complexity for this algorithm -3. Показать, что приведение системы к консистентности - это кол-во тайм слотов от (1, диаметра графа). - выполнено +\item consider all the proposed above metrics in various kinds of real topologies. +\end{itemize} -4. Нахождение самой актуальной реплики и кол-во консистентных ей - сколько тайм слотов - выполнено -Investigation what is better for fast consistency convergence: -group of masters close enough each to other (this almost replaces centralized server) -or group of masters allocated in far each from other but having close at least one of slaves. -This needs statistic experiment -\section{Inconsistency metric in various kinds of algorithms spreading replicas across DDS} -Все исследования сейчас основываются на предположении абсолютной надежности сети (отсутсвие network partitions) и отсутствие ограничений на пропускную способнсть (капасити линков равное единице). -Вычислить на основе иммитационных экспериментов на графе метрику инконсистентности на разных алгоритмах (эпидемический). +\begin{thebibliography}{00} -\section{Different topologies} -- Полносвязный граф -- Регулярный граф -- Рандомный граф -- Граф, где писать нужно на определенные узлы (мастера). Проверить идею, насколько она лучше других, когда у каждого мастера есть примерно по одинковому кол-ву соседей - слейвов (Один слейв может быть соседом несколкьих мастеров, это не есть ограничением). Сравнить с вариантом, когда мастера сгруппированы в одном месте (сходится к ситуации централизованного хранилища и не имеет смысла). И с вариантом, когда мастера отдаленно друг от друга, а слейве где попало. -Внедрить разное капасити (edge weight) для линков. +\bibitem{bib:brewer} +Eric A. Brewer: +Towards robust distributed systems, +(Invited talk). Principles of Distributed Computing, Portland, Oregon (July 2000). -\section{Future work} -!!!! Отдельная секция про availability или на дальнейший ресерч - +\bibitem{bib:prob_approach} +Kyrylo Rukkas, Galyna Zholtkevych: +Distributed Datastores: Towards Probabilistic Approach for Estimation of Dependability, +ICTERI 2015: 523-534 -Алгоритм распространения-очищения реплик. Если даатаюнит часто запрашивается, то реплика его появляется там, где он часто запрашивается. Когда таймаут запроса к нему истечет (он больше не интересен), реплика его удаляется с этого места. -Исследовать, насколько может повыситься consistency и availability. +\bibitem{bib:acid_vs_base} +Charles Roe: +ACID vs. BASE: The Shifting pH of Database Transaction Processing +http://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing, March 1, 2012 -- Внедрить возможность когда показатели надежности падают, network partitions возникают. +\bibitem{bib:tanenbaum} +Tanenbaum, A.S., Van Steen, M.: +Distributed systems. Principles and Paradigms (2nd Edition). +Prentice-Hall, Inc. (2006) +\bibitem{bib:andrews} +Andrews,~G.\,E.: +The theory of partitions. +Addison-Wesley (1976) -\section{Conclusion} -\begin{thebibliography}{00} +\bibitem{bib:github_dds} +G.Zholtkevych: +DDS Simulation project, +https://github.com/gzholtkevych/DDS-Simulation (2016) \bibitem{bib:c_ts} Sanjay Kumar Madria: Handling of Mutual Conflicts in Distributed Databases using Timestamps, The Computer Journal. Vol. 41, No.\,6 (1998) -\bibitem{bib:andrews} -Andrews,~G.\,E.: -The theory of partitions. -Addison-Wesley (1976) \end{thebibliography} \end{document} diff --git a/results/100-consistency-convergence.png b/results/100-consistency-convergence.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c9e8be7a5dd9f02b5d8f46a64c67856950ed26 GIT binary patch literal 13173 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 Q6pX~qoYGOxRq~*siMfVi+vY@ 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%0Aw=Z{L@5$B^6m<{0D|G>*_z-1hP+ub>R< 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 Date: Wed, 15 Nov 2017 22:51:30 +0200 Subject: [PATCH 2/4] New results for experiment --- .gitignore | 1 + .../experiments/consistent_partitions.py | 9 ++-- dds_simulation/experiments/simulation.py | 7 +++ dds_simulation/visualisation/extrapolation.py | 20 +++------ .../1-1-1-1-1-max-consistent-partitions.png | Bin 0 -> 11058 bytes .../1-1-1-2-max-consistent-partitions.png | Bin 0 -> 21655 bytes .../1-1-3-max-consistent-partitions.png | Bin 0 -> 23416 bytes .../1-2-2-max-consistent-partitions.png | Bin 0 -> 22578 bytes .../images/1-4-max-consistent-partitions.png | Bin 0 -> 24482 bytes papers/images/1-max-consistent-partitions.png | Bin 0 -> 10702 bytes .../images/2-3-max-consistent-partitions.png | Bin 0 -> 23714 bytes papers/index.aux | 12 ++--- papers/index.tex | 41 +++++++++++++++++- ...nodes-a09031b4283547c49d2146f1977a37b1.png | Bin 0 -> 11058 bytes ...nodes-7b54eddb588c4b4b9ecc9b54b2b2d595.png | Bin 0 -> 21655 bytes ...nodes-e10ba0b330c34d7498ddd29dd0c79bfd.png | Bin 0 -> 23416 bytes ...nodes-bbc08cc6dbf247c585b7bf281bb93b59.png | Bin 0 -> 22578 bytes ...nodes-a225effe3dc44f12b4ab06b444908280.png | Bin 0 -> 24482 bytes ...nodes-ed1f00b801bd42c8a7ccc5330ad1c19a.png | Bin 0 -> 23714 bytes ...nodes-f2e7c2370286417a85b9052cd373a1c1.png | Bin 0 -> 10702 bytes 20 files changed, 66 insertions(+), 24 deletions(-) create mode 100644 papers/images/1-1-1-1-1-max-consistent-partitions.png create mode 100644 papers/images/1-1-1-2-max-consistent-partitions.png create mode 100644 papers/images/1-1-3-max-consistent-partitions.png create mode 100644 papers/images/1-2-2-max-consistent-partitions.png create mode 100644 papers/images/1-4-max-consistent-partitions.png create mode 100644 papers/images/1-max-consistent-partitions.png create mode 100644 papers/images/2-3-max-consistent-partitions.png create mode 100644 results/(1, 1, 1, 1, 1)-max-consistent-partitions-probability-5-nodes-a09031b4283547c49d2146f1977a37b1.png create mode 100644 results/(1, 1, 1, 2)-max-consistent-partitions-probability-5-nodes-7b54eddb588c4b4b9ecc9b54b2b2d595.png create mode 100644 results/(1, 1, 3)-max-consistent-partitions-probability-5-nodes-e10ba0b330c34d7498ddd29dd0c79bfd.png create mode 100644 results/(1, 2, 2)-max-consistent-partitions-probability-5-nodes-bbc08cc6dbf247c585b7bf281bb93b59.png create mode 100644 results/(1, 4)-max-consistent-partitions-probability-5-nodes-a225effe3dc44f12b4ab06b444908280.png create mode 100644 results/(2, 3)-max-consistent-partitions-probability-5-nodes-ed1f00b801bd42c8a7ccc5330ad1c19a.png create mode 100644 results/(5,)-max-consistent-partitions-probability-5-nodes-f2e7c2370286417a85b9052cd373a1c1.png diff --git a/.gitignore b/.gitignore index 1f44705..5724384 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,4 @@ ENV/ *.pdf *.log *.gz +*.zip diff --git a/dds_simulation/experiments/consistent_partitions.py b/dds_simulation/experiments/consistent_partitions.py index 87817e5..2cb17bb 100644 --- a/dds_simulation/experiments/consistent_partitions.py +++ b/dds_simulation/experiments/consistent_partitions.py @@ -74,6 +74,7 @@ def multiple_partitions(self, partitions_number): nodes = [node.identity for node in self.nodes] partitions_invariants = [i + 1 for i in range(len(nodes))] + print("part inv>>> ", partitions_invariants) partitions = list( filter(lambda partition: sum(partition) == len(nodes), combinations_with_replacement( @@ -82,7 +83,7 @@ def multiple_partitions(self, partitions_number): y = [] x = [] inconsistency_array = [] - + print("patritions: ", partitions) for part in partitions: print("=========================================") print("PARTITION: ", part) @@ -95,6 +96,7 @@ def multiple_partitions(self, partitions_number): probability = sum(inconsistency_array) / len( inconsistency_array) + inconsistency_array.clear() y.append(probability) x.append(i) @@ -104,16 +106,17 @@ def multiple_partitions(self, partitions_number): # probability of inconsistency: average = sum(y) / len(y) + maximum = max(y) print(average) + print(maximum) extrapolation.draw_probability_extrapolation( - x, y, part, len(nodes), average) + x, y, part, len(nodes), average, maximum) x.clear() y.clear() return x, y def start_experiment(self): - partitions = int(default.parameter('experiment', 'partitions')) inconsistency_states = self.multiple_partitions(partitions) diff --git a/dds_simulation/experiments/simulation.py b/dds_simulation/experiments/simulation.py index 9b71b36..4a6cb3d 100644 --- a/dds_simulation/experiments/simulation.py +++ b/dds_simulation/experiments/simulation.py @@ -20,6 +20,13 @@ def __init__(self, graph): self.nodes = list() self.links = set() self.graph = graph + self.nodes = [] + for node_ident in graph.nodes(): + neighbors = graph.neighbors(node_ident) + self.nodes.append(Node(node_ident, neighbors)) + + for node1, node2 in graph.edges(): + self.links.add(Link(node1, node2)) @abc.abstractmethod def start_experiment(self): diff --git a/dds_simulation/visualisation/extrapolation.py b/dds_simulation/visualisation/extrapolation.py index 7e967f0..b9ccb69 100644 --- a/dds_simulation/visualisation/extrapolation.py +++ b/dds_simulation/visualisation/extrapolation.py @@ -21,14 +21,17 @@ def draw_extrapolation(x_vector, y_vector, partitions_number): def draw_probability_extrapolation(x_vector, y_vector, partitions, - nodes_number, average): + nodes_number, average, maximum=None): pyplot.figure() pyplot.ylim(0, 1) - pyplot.ylabel('I({}) = {}'.format(partitions, average)) + label = f'I({partitions}) = {average}' + if maximum is not None: + label = f'I_max({partitions}) = {maximum}' + pyplot.ylabel(label) pyplot.plot(x_vector, y_vector, color='b', linewidth=2.0) path = os.path.join(PROJECT_ROOT, 'results', - '{}-consistent-partitions-probability-{}-nodes-{}'.format( + '{}-max-consistent-partitions-{}-nodes-{}'.format( partitions, nodes_number, uuid4().hex)) pyplot.savefig(path) @@ -40,16 +43,7 @@ def draw_function(x_vector, y_vector, x_label, y_label, filename): pyplot.ylabel(y_label) print("X >>> ", x_vector) print("Y >>>> ", y_vector) - # 'c' - # cyan - # 'm' - # magenta - # 'y' - # yellow - # 'k' - # black - # 'w' - # white + pyplot.plot(x_vector, y_vector, 'o', color='r', linewidth=2.0) x_line = [x_vector[i] for i in range(0, len(x_vector)) if x_vector[i] == y_vector[i]] diff --git a/papers/images/1-1-1-1-1-max-consistent-partitions.png b/papers/images/1-1-1-1-1-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..91b38a939c7e50bd26d94d4311fae13d7ed5b610 GIT binary patch literal 11058 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 literal 0 HcmV?d00001 diff --git a/papers/images/1-2-2-max-consistent-partitions.png b/papers/images/1-2-2-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..18b5a231912834799d342351f5b90782739d2057 GIT binary patch literal 22578 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 EPbSxo-v9sr literal 0 HcmV?d00001 diff --git a/papers/images/1-4-max-consistent-partitions.png b/papers/images/1-4-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..78fdd080867a42463e6b1cc12c15c5341f321fad GIT binary patch literal 24482 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 literal 0 HcmV?d00001 diff --git a/papers/images/1-max-consistent-partitions.png b/papers/images/1-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8bc4f91683159899c8d3586b66f5282a90d1ee GIT binary patch literal 10702 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 LlyWa#yZ65UC=*;9 literal 0 HcmV?d00001 From 2a57b48b9f26a34f7975e4d65c1317ab805b01e9 Mon Sep 17 00:00:00 2001 From: Galyna Zholtkevych Date: Thu, 23 Nov 2017 23:04:38 +0200 Subject: [PATCH 3/4] Final paper and results Final paper for presentation --- dds_simulation/experiments/link.py | 3 +- dds_simulation/experiments/simulation.py | 91 +++-- dds_simulation/start_experiment.py | 14 +- .../visualisation/graph_building.py | 6 +- etc/datastore.ini | 6 +- models/message-bradcasting-state-machine.uxf | 215 +++++++++++ models/message-broadcasting-state-machine.uxf | 215 +++++++++++ .../100-consistency-convergence-weighted.png | Bin 0 -> 12190 bytes .../1000-consistency-convergence-weighted.png | Bin 0 -> 16873 bytes .../200-consistency-convergence-weighted.png | Bin 0 -> 14483 bytes .../message-broadcasting-state-machine.png | Bin 0 -> 30329 bytes papers/index.aux | 40 ++- papers/index.tex | 340 +++++++----------- .../100-consistency-convergence-weighted.png | Bin 0 -> 12190 bytes results/100-consistency-convergence.png | Bin 13173 -> 0 bytes .../1000-consistency-convergence-weighted.png | Bin 0 -> 16873 bytes .../200-consistency-convergence-weighted.png | Bin 0 -> 14483 bytes 17 files changed, 682 insertions(+), 248 deletions(-) create mode 100644 models/message-bradcasting-state-machine.uxf create mode 100644 models/message-broadcasting-state-machine.uxf create mode 100644 papers/images/100-consistency-convergence-weighted.png create mode 100644 papers/images/1000-consistency-convergence-weighted.png create mode 100644 papers/images/200-consistency-convergence-weighted.png create mode 100644 papers/images/message-broadcasting-state-machine.png create mode 100644 results/100-consistency-convergence-weighted.png delete mode 100644 results/100-consistency-convergence.png create mode 100644 results/1000-consistency-convergence-weighted.png create mode 100644 results/200-consistency-convergence-weighted.png diff --git a/dds_simulation/experiments/link.py b/dds_simulation/experiments/link.py index 3ea6868..41d90dc 100644 --- a/dds_simulation/experiments/link.py +++ b/dds_simulation/experiments/link.py @@ -4,9 +4,10 @@ class Link(object): bandwidth = 1 - def __init__(self, node1, node2): + def __init__(self, node1, node2, weight=None): self.node1 = node1 self.node2 = node2 + self.weight = weight def transmit(self, message): return self.bandwidth diff --git a/dds_simulation/experiments/simulation.py b/dds_simulation/experiments/simulation.py index 4a6cb3d..865cd32 100644 --- a/dds_simulation/experiments/simulation.py +++ b/dds_simulation/experiments/simulation.py @@ -8,6 +8,7 @@ from dds_simulation.experiments.dataunit import Dataunit from dds_simulation.visualisation import graph_control, extrapolation +from dds_simulation.conf import default class DDS(object): @@ -27,6 +28,7 @@ def __init__(self, graph): for node1, node2 in graph.edges(): self.links.add(Link(node1, node2)) + int(default.parameter('topology', 'nodes')) @abc.abstractmethod def start_experiment(self): @@ -41,21 +43,37 @@ class DDSMessaging(DDS): def __init__(self, graph, distribution, dataunits_number): super(DDSMessaging, self).__init__(graph) self.controller = graph_control.GraphController(graph) + self.graph = graph self.time_slots_taken = 0 - self.diameter = networkx.diameter(graph) - self.controller = graph_control.GraphController(graph) + self.nodes = [] + + weighted = bool(default.parameter('topology', 'weighted')) + eccentricity = {} + for node1, node2 in graph.edges(): + self.links.add(Link(node1, node2)) + if weighted: + graph[node1][node2]['weight'] = random.randint(1, 9) + for node_ident in graph.nodes(): neighbors = graph.neighbors(node_ident) self.nodes.append(Node(node_ident, neighbors)) + self._eccentricity(node_ident, eccentricity) - for node1, node2 in graph.edges(): - self.links.add(Link(node1, node2)) + self.diameter = networkx.diameter(graph, e=eccentricity) + print("diameter > ", self.diameter) self.dataunits = DDSMessaging.generate_data(dataunits_number) self.distribute_data(distribution) + def _eccentricity(self, node, eccentricity): + path = networkx.single_source_dijkstra_path_length( + self.graph, node, weight='weight') + path = {k: v for k, v in path.items() + if not eccentricity.get(k) or v > eccentricity[k]} + eccentricity.update(path) + @staticmethod def generate_data(dataunits): return [Dataunit(i) for i in range(dataunits)] @@ -89,6 +107,14 @@ def _simulate_message_single_iteration(self, node_identity, def _simulate_parallel_iterations(self): pass + def _shortest_path_for_neighbors(self, i, neighbors): + if i in neighbors: + neighbors.remove(i) + path = networkx.single_source_dijkstra_path( + self.graph, i, weight='weight') + + path.pop(i) + return [path[n][1] for n in neighbors if len(path[n]) > 1] def simulate_message(self): """Simulate communication process. @@ -96,42 +122,63 @@ def simulate_message(self): Simulate communication process starting from one of nodes. """ - dataunit_id = random.randint(0, len(self.dataunits)) # only first node is taken at random node_identity = random.randint(0, len(self.nodes) - 1) self.time_slots_taken = 0 - # if dataunit_id in self.nodes[node_identity].dataunits_ids: - # self.time_slots_taken += 1 - - #self.controller.message_broadcast([node_identity], []) - - labels = {k.identity: k.identity for k in self.nodes} - new_neighbors = [] + new_neighbors = set() nodes_processed = set([node_identity]) - + print("node ident>>> ", node_identity) neighbors = self.graph.neighbors(node_identity) - + path_ahead = self._shortest_path_for_neighbors(node_identity, neighbors) + print("neighbors>>> ", neighbors) nodes_processed.update(set(neighbors)) - self.time_slots_taken += 1 + link_cost = min([self.graph[node_identity][n]['weight'] for n in path_ahead]) + print("time slots taken first time>>> ", link_cost) + self.time_slots_taken += link_cost while len(nodes_processed) < len(self.nodes): - # ноды должны тоже выбираться параллельно, а не только одна, должны передавать сообщение + # ноды должны тоже выбираться параллельно, + # а не только одна, должны передавать сообщение # ВСЕ соседи ПАРАЛЛЕЛЬНО - for i in neighbors: - new_neighbors.extend(self.graph.neighbors(i)) + link_costs = [] + print("====================================") + for i in neighbors: + print("identity now>>>> ", i) + neighbors_candidates = set(self.graph.neighbors(i)) - nodes_processed + new_neighbors.update(neighbors_candidates) + print("neighbors now>>>> ", new_neighbors) + path_ahead = self._shortest_path_for_neighbors( + i, new_neighbors) + print("path ahed>>> ", path_ahead) + max_weight = min([self.graph[i][n]['weight'] for n in path_ahead]) + print("max weight now>>> ", max_weight) + link_costs.append( + max_weight) + print("=============================") + print("link costs>> ", link_costs) + + link_cost = min(link_costs) + print("link costs before addig >> ", link_cost) nodes_processed.update(set(new_neighbors)) + self.time_slots_taken += link_cost - self.time_slots_taken += 1 + print("current time slots taken>>> ", self.time_slots_taken) neighbors.clear() - neighbors = new_neighbors[:] + link_costs.clear() + + neighbors = list(new_neighbors)[:] + print("neighbors in the end>>>> ", neighbors) new_neighbors.clear() - # self.controller.draw_graph( - # self.graph, labels, f'{self.time_slots_taken}-{self.diameter}') + + if self.time_slots_taken > self.diameter: + labels = {k.identity: k.identity for k in self.nodes} + self.controller.draw_graph( + self.graph, labels, f'{self.time_slots_taken}-{self.diameter}') def get_delivery_time(self): """Useful for interactive mode now""" diff --git a/dds_simulation/start_experiment.py b/dds_simulation/start_experiment.py index 11e08c0..a46b7b5 100644 --- a/dds_simulation/start_experiment.py +++ b/dds_simulation/start_experiment.py @@ -11,9 +11,9 @@ def _initiate_dds(distribution, dataunits_number): - degree = random.randint(2, 30) // 2 * 2 + degree = random.randint(2, 5) // 2 * 2 nodes = degree * 7 - graph = graph_building.form_graph(nodes, degree) + graph = graph_building.form_graph(6, 3) try: return simulation.DDSMessaging(graph, distribution, @@ -36,13 +36,19 @@ def _initiate_dds(distribution, dataunits_number): for i in range(experiments): + print("====================") + print(i) dds_service = _initiate_dds(distribution, dataunits_number) dds_service.start_experiment() x_vector.append(dds_service.time_slots_taken) y_vector.append(dds_service.diameter) + print("X>> ", len(x_vector),x_vector) + print("Y>>> ", len(y_vector), y_vector) draw_function(x_vector, y_vector, 'T_c', 'D(G)', - f'{experiments}-consistency-convergence') - + f'{experiments}-consistency-convergence-weighted') + # graph = graph_building.form_graph(nodes, degree) + # exp = consistent_partitions.ConsistentExperiment(graph) + # exp.start_experiment() diff --git a/dds_simulation/visualisation/graph_building.py b/dds_simulation/visualisation/graph_building.py index 2fcda7b..b3cc1b5 100644 --- a/dds_simulation/visualisation/graph_building.py +++ b/dds_simulation/visualisation/graph_building.py @@ -17,11 +17,13 @@ def generate_data(): def draw_graph(graph, labels, filename): plt.figure() - nx.draw(graph, nx.circular_layout(graph)) + nx.draw(graph, nx.circular_layout(graph),edgelist=graph.edges(data=True)) nx.draw_networkx_labels(graph, nx.circular_layout(graph), labels=labels, font_size=16) - + edge_labels = nx.get_edge_attributes(graph, 'weight') + nx.draw_networkx_edge_labels(graph, nx.circular_layout(graph), + edge_labels=edge_labels) plt.savefig(f"{filename}.png") diff --git a/etc/datastore.ini b/etc/datastore.ini index dabca4d..a5d2c18 100644 --- a/etc/datastore.ini +++ b/etc/datastore.ini @@ -13,6 +13,8 @@ graph_type = random # The result of (nodes * degree) should be even degree = 4 +weighted = True + [dataunit] # Number of dataunits distributed across DDS @@ -24,8 +26,8 @@ distribution = random [experiment] -experiments = 1000 +experiments = 200 sub_experiments = 50 -partitions = 5 \ No newline at end of file +partitions = 1 \ No newline at end of file diff --git a/models/message-bradcasting-state-machine.uxf b/models/message-bradcasting-state-machine.uxf new file mode 100644 index 0000000..97d485e --- /dev/null +++ b/models/message-bradcasting-state-machine.uxf @@ -0,0 +1,215 @@ + + + 10 + + UMLState + + 40 + 110 + 320 + 60 + + current node = random node; +TS = 0; processed = [] + + + + Relation + + 190 + 40 + 160 + 90 + + lt=<- +message incoming + 10.0;70.0;10.0;10.0 + + + UMLSpecialState + + 190 + 30 + 20 + 20 + + type=initial + + + + Relation + + 190 + 160 + 30 + 60 + + lt=<- + + 10.0;40.0;10.0;10.0 + + + UMLState + + 90 + 200 + 230 + 40 + + add random node to processed + + + + Relation + + 190 + 230 + 30 + 70 + + lt=<- + 10.0;50.0;10.0;10.0 + + + UMLState + + 70 + 280 + 270 + 50 + + neigbors = neighbors of +current node + + + + Relation + + 190 + 320 + 30 + 70 + + lt=<- + + 10.0;50.0;10.0;10.0 + + + UMLState + + 80 + 370 + 250 + 50 + + TS += min(link costs between +source node and neighbors) + + + + Relation + + 190 + 410 + 30 + 80 + + lt=<- + 10.0;60.0;10.0;10.0 + + + UMLState + + 80 + 470 + 250 + 50 + + add neighbors to processed + + + + UMLState + + 80 + 570 + 250 + 50 + + new neighbors = neigbors of +for each of current neighbors + + + + Relation + + 190 + 510 + 30 + 80 + + lt=<- + 10.0;60.0;10.0;10.0 + + + UMLSpecialState + + 470 + 550 + 110 + 80 + + type=decision + + + + + Relation + + 320 + 570 + 170 + 40 + + lt=<- + + 150.0;20.0;10.0;20.0 + + + Relation + + 330 + 280 + 220 + 290 + + lt=<- +length of processed < +total number of nodes + 10.0;20.0;200.0;20.0;200.0;270.0 + + + Relation + + 570 + 570 + 290 + 50 + + lt=<- +length of processed +reached total number of nodes + 270.0;20.0;10.0;20.0 + + + UMLSpecialState + + 840 + 580 + 20 + 20 + + type=final + + + diff --git a/models/message-broadcasting-state-machine.uxf b/models/message-broadcasting-state-machine.uxf new file mode 100644 index 0000000..97d485e --- /dev/null +++ b/models/message-broadcasting-state-machine.uxf @@ -0,0 +1,215 @@ + + + 10 + + UMLState + + 40 + 110 + 320 + 60 + + current node = random node; +TS = 0; processed = [] + + + + Relation + + 190 + 40 + 160 + 90 + + lt=<- +message incoming + 10.0;70.0;10.0;10.0 + + + UMLSpecialState + + 190 + 30 + 20 + 20 + + type=initial + + + + Relation + + 190 + 160 + 30 + 60 + + lt=<- + + 10.0;40.0;10.0;10.0 + + + UMLState + + 90 + 200 + 230 + 40 + + add random node to processed + + + + Relation + + 190 + 230 + 30 + 70 + + lt=<- + 10.0;50.0;10.0;10.0 + + + UMLState + + 70 + 280 + 270 + 50 + + neigbors = neighbors of +current node + + + + Relation + + 190 + 320 + 30 + 70 + + lt=<- + + 10.0;50.0;10.0;10.0 + + + UMLState + + 80 + 370 + 250 + 50 + + TS += min(link costs between +source node and neighbors) + + + + Relation + + 190 + 410 + 30 + 80 + + lt=<- + 10.0;60.0;10.0;10.0 + + + UMLState + + 80 + 470 + 250 + 50 + + add neighbors to processed + + + + UMLState + + 80 + 570 + 250 + 50 + + new neighbors = neigbors of +for each of current neighbors + + + + Relation + + 190 + 510 + 30 + 80 + + lt=<- + 10.0;60.0;10.0;10.0 + + + UMLSpecialState + + 470 + 550 + 110 + 80 + + type=decision + + + + + Relation + + 320 + 570 + 170 + 40 + + lt=<- + + 150.0;20.0;10.0;20.0 + + + Relation + + 330 + 280 + 220 + 290 + + lt=<- +length of processed < +total number of nodes + 10.0;20.0;200.0;20.0;200.0;270.0 + + + Relation + + 570 + 570 + 290 + 50 + + lt=<- +length of processed +reached total number of nodes + 270.0;20.0;10.0;20.0 + + + UMLSpecialState + + 840 + 580 + 20 + 20 + + type=final + + + diff --git a/papers/images/100-consistency-convergence-weighted.png b/papers/images/100-consistency-convergence-weighted.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cef03ab574a378de5f7cbe10bf6251841d945b GIT binary patch literal 12190 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 bmkr8k7t~3;l1wz10Hmg*buH(L<-Pv{vj>qH literal 0 HcmV?d00001 diff --git a/papers/images/1000-consistency-convergence-weighted.png b/papers/images/1000-consistency-convergence-weighted.png new file mode 100644 index 0000000000000000000000000000000000000000..aad9f4adaad7fb33cbab292d9ec99c27a07484af GIT binary patch literal 16873 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≶>jNQMT}kQn6KCgjfxQ(0c|?uPjq071=8D;@Y}h~n(lRjq+&l)0E)V(< za82L8-vfukeqd9R5;7~G=O`rk5HxoKYW2z(L3AZ9hax)RHVX&eIRkO8wG0gEltWLR z(e{J@BJ*R5cr#8t2oHqCY0zli3Ad^fuzSXfHH19B-PMG-)CkolmBQzN+vnT=$ti`+ zW0<5Ggm(ovKvP{k*<@#w$sTF>$KN~XFI>1#0jlA8n=JiI@U@{fuqR#nERZu`F9$oL zmd@FejXhXjUq5}#KGto%H_5?g?2J9qJO?Q0ao!8%Jis=D86j}&?#%V%yMw6#BENcm z&30B(bMqiSML1~ANm*NSA1O)QSx27K_sL6{#d+N_P37v3B0`hZVs;G5qXsu^mPf2l~>(VI!h?rHQv<^fj+x9&J}wm$=LHy+E`9pef)SHE>H2 z6Yp~!$2X3lfU|ai#!8ow04AH+&P@2mK^Kj_L-l$zNQo0}+;59PGmG88r~7hpa;>=(GA0wrN54`2c^b7|`-HIghu4M3!eNnDIzB3+AjnM(%N7Z5P2BhNlAihzXM%P;{o9^D?HCY1>sG9{~c&ot0=TKu^0Dxj}Ll2GUvLje`6$ZroW z`lW;PrMUm7h4xSDG9(09K zvJ-&UUsTKF`zzh^Re|G<+kODV8^_M%Rv-xd4klb0S1Cf-PomZg*g01YLYHSAVBLFkCyTWyD4PfIo zTt`q_Z*PV#0bhbJ+JCfxCeCN25wwvdgIb$bxlo}Dn{TO#5yjwv6|g#`Cfu}jdP}s5 zMpA6PYhb?XnD}cp&1}Ka+an(o!%kp#XQoCjcpyU$Y{H6lfIBOV!V5vmZ;8u{y6x!K zSKUh^b-DR|>)G9Eek&)k%gg(~D3&^u1zbIU=z@k}@XSkBf4>dLT>ZdsC%k5_vT*h{_F0w#$ISporwat`f}1te#s&JKrcqSvKKDR0t4R}! zU(m7gD2lIlY8d6wK-(dpEVL;DoZZyg>OhZx-e!PDo!XSaZnsAQB*+1g$_T`{cIyG+ z)dSM-q#HLR$gzLQ5B3$HM&5=W5&Gaz1Nw)RBzHH*SnV&6L9hHld8!t+{J{)&wb?v= z-1&{kBnNhK0m-7aB_-jEJ$Tv(6ebS8cK{R~JUmk4I2L@(rZeNdk(7PavV2)H8PwoN z!wl6p0<}r*To}KJva<58PflZ_hQ}aUI#Lb*#vX`K(1KF<-+A0_a*w1UN&AJ^s@4TC P07y|z^>*GZ(`Ww!CvCqO literal 0 HcmV?d00001 diff --git a/papers/images/message-broadcasting-state-machine.png b/papers/images/message-broadcasting-state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..489490ad8a43e347e0fe33c580c42ef264ff48ef GIT binary patch literal 30329 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�{#Y|hvaSTtYjOKdK3I!urfBXZ7#a(jy@x`g~w#%V~gg=eV^|J<<$k!2ne>ovt z^>e5_A639Cv@pLdEGTo)uX#=K)2ZUB_1#3#r?($Va@Y~H?FqDso-GC%_d+wA~}^!i;qhzlSWC@ziyY9w7@iLOK5 zqUzx!0Mt^Ek^EhYt9#_%p&3tZIQu|Oq3NwSm@%D zkpO}`ymXC~^GbH(pr^iEloZPSCJJTmZBWQRdc`7)O;~fCyy>ltYA`ZhvJX zLSQ?MC?g(rEmt~3vM8p3obC{ul+KJ0a2K{9>D~J1g~*A{qC?yOS8LulMiE!ATJaum8&z*a(#J XcjeB{zr{zwp%5wxn(`%b*8~3x6sm&e literal 0 HcmV?d00001 diff --git a/papers/index.aux b/papers/index.aux index 02a839e..893e2bd 100644 --- a/papers/index.aux +++ b/papers/index.aux @@ -2,13 +2,13 @@ \citation{bib:brewer} \citation{bib:acid_vs_base} \citation{bib:tanenbaum} -\citation{bib:prob_approach} \@writefile{toc}{\contentsline {title}{Distributed Datastores: Consistency Metric for Distributed Datastores}{1}} \@writefile{toc}{\authcount {2}} \@writefile{toc}{\contentsline {author}{Kyrylo Rukkas\and Galyna Zholtkevych}{1}} \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}} \newlabel{sec:intro}{{1}{1}} \citation{bib:prob_approach} +\citation{bib:prob_approach} \@writefile{toc}{\contentsline {section}{\numberline {2}Evolving consistency metric mathematical model: Derived metrics}{2}} \newlabel{sec:model}{{2}{2}} \newlabel{ex:partitions}{{1}{3}} @@ -16,18 +16,44 @@ \newlabel{ex:metric}{{2}{4}} \@writefile{toc}{\contentsline {section}{\numberline {3}Convergence time complexity}{4}} \newlabel{sec:complexity}{{3}{4}} +\newlabel{prop}{{1}{4}} \@writefile{toc}{\contentsline {section}{\numberline {4}Case Study}{5}} \newlabel{sec:experiments}{{4}{5}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The datastore is fully consistent and fully inconsistent\relax }}{6}} \providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} -\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 314}}{9}} +\newlabel{pic:fully}{{1}{6}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The datastore has two consistent partitions\relax }}{6}} +\newlabel{pic:two_parts}{{2}{6}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The datastore has three consistent partitions\relax }}{6}} +\newlabel{pic:three_parts}{{3}{6}} \citation{bib:github_dds} -\@writefile{toc}{\contentsline {section}{\numberline {5}Simulation Model to Assess Inconsistency Ratio of Data}{10}} -\newlabel{sec:simulation}{{5}{10}} -\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 332}}{10}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{10}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces The datastore has four consistent partitions\relax }}{7}} +\newlabel{pic:four_parts}{{4}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Simulation Model to Estimate Inconsistency Ratio of Data}{7}} +\newlabel{sec:simulation}{{5}{7}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 262}}{8}} +\newlabel{100}{{5a}{8}} +\newlabel{sub@100}{{a}{8}} +\newlabel{200}{{5b}{8}} +\newlabel{sub@200}{{b}{8}} +\newlabel{1000}{{5c}{8}} +\newlabel{sub@1000}{{c}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Graphics for consistency convergence time\relax }}{8}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 286}}{8}} +\newlabel{pic:100-w}{{6a}{8}} +\newlabel{sub@pic:100-w}{{a}{8}} +\newlabel{pic:200-w}{{6b}{8}} +\newlabel{sub@pic:200-w}{{b}{8}} +\newlabel{pic:1000-w}{{6c}{8}} +\newlabel{sub@pic:1000-w}{{c}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Graphics for consistency convergence time on weighted graph\relax }}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Class diagram for simulation model of a distributed datastore\relax }}{8}} +\newlabel{pic:diagram}{{7}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces State machine of simulation of message broadcasting through a datastore\relax }}{9}} +\newlabel{pic:state-machine}{{8}{9}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{9}} \citation{bib:c_ts} \bibcite{bib:brewer}{1} -\@writefile{toc}{\contentsline {section}{\numberline {7}Future work}{11}} \bibcite{bib:prob_approach}{2} \bibcite{bib:acid_vs_base}{3} \bibcite{bib:tanenbaum}{4} diff --git a/papers/index.tex b/papers/index.tex index bf9133f..e8f08dc 100644 --- a/papers/index.tex +++ b/papers/index.tex @@ -1,4 +1,7 @@ %\emph{\emph{•}} +% * 2017-11-19T14:02:18.924Z: +% +% ^. \documentclass{llncs} % \usepackage{amsmath} @@ -10,6 +13,8 @@ \usepackage{url} \usepackage[usenames]{color} +\usepackage{lipsum} % stab + \newcommand{\keyterms}[1]{\par{\bfseries{ Key Terms: }}#1} \begin{document} @@ -21,16 +26,16 @@ \maketitle \begin{abstract} Distributed databases being evolved require write requests to be handled independently to increase availability. -This means that nodes in a database can process modifying operation. This involves huge conflicts and leads to -full inconsistency and mess between replicas. This paper investigates the metrics to define consistency state of a datastore and improve it. +This means that some number of nodes in a database can process modifying operation. This involves huge conflicts and leads to full inconsistency and mess between replicas. This paper takes attention on the consistency and proposing to replace binary metric by stochastic metric. Also, paper is devoted to +consistency convergence investigation and propose some inferences for the algorithm of decision-making behaviour. \end{abstract} \section{Introduction}\label{sec:intro} In the epoch of popular usage of IoT, Big Data, Cloud Computing, the data become more and more important thing and require larger, more reliable storage. This leads to increasing size of distributed storages. They become bigger and bigger and require the huge network across all the distributed nodes. But there are several unsolved problems using large distributed datastores and some of them are strongly related to the CAP-theorem. -Given that the ACID strategy can not be supported for systems of this class \cite{bib:brewer}, mechanisms for delivering data across distributed storage still lack fast eventual consistency convergence, reliability and tolerance to network partitions. +Given that the ACID strategy can not be supported for systems of this class (see \cite{bib:brewer}), mechanisms for delivering data across distributed storage still lack fast eventual consistency convergence, reliability and tolerance to network partitions. -So let's concentrate on efficient consistency model - BASE (Basically Available, Soft State, Eventual Consistency) \cite{bib:acid_vs_base} +So let's concentrate on efficient consistency model - BASE (Basically Available, Soft State, Eventual Consistency) (see \cite{bib:acid_vs_base}). Mainly this paper is devoted to eventual consistency. Let us remind what eventual consistency is referencing to well-known book \cite{bib:tanenbaum}: the form of consistency is called eventual if no updates take place for a long time and all replicas will gradually become consistent. Supporting replicas of an evolving distributed system up-to-date is very important but hard problem. Thus we need to provide a set of indicators of main characteristics of the distributed data store to assess the risk of a wrong decision because of the data inconsistency or unavailability. @@ -38,32 +43,16 @@ \section{Introduction}\label{sec:intro} For that instead of binary metric for eventual consistency/inconsistency we propose stochastic metric. Also we would like to know if it is possible to find the optimal interval between writable operations occuring on distributed systems so that system can eventually be consistent in that interval. + In the section \ref{sec:model} we develop consistency model defined in the previous paper \cite{bib:prob_approach} and define the inconsistency metric for a distributed datastore. -In section \ref{sec:experiments} we conduct experiments that prove the correctness of metric defined in previous section. -In section \ref{sec:simulation} we provide diagrams of the implemented application that we use for carrying out experiments. In section \ref{sec:complexity} section we approximate the time that is needed for consistency convergence - state of the distributed system when all nodes have consistent replicas. -%Given that in a distributed data store consistency of replicas may only be eventually \cite[{\color{red} you need to refer to the corresponding papers}]{?}, we need the answering the following questions -%\begin{enumerate} -%\item -%How to resolve conflicts between replicas? -%This problem is raised and partially solved in \cite{bib:c_ts}, where algorithm with timestamps on replicas is proposed. -%But merging updated replicas, it takes the response time, so consistency convergence decreases. -%In the paper further sections we will investigate faster consistency convergence. -%\item -%Is it always possible to ensure the convergence to the consistency of data and by what means can this be achieved? -%This depends on many factors including network topology, -%network failures, links bandwidth, bottlenecks in network overall etc \cite[{\color{red} links are needed}]{?}. -%\item -%What methods can be used to effectively solve the broadcast storm problem? -%This is well-known problem and it has the solution in \cite[{\color{red} links are needed}]{?}. -%\item How do loops when broadcasting data be eliminated? -%This is what networking algorithms aimed to solve \cite[{\color{red} links are needed}]{?}. -%\end{enumerate} +In section \ref{sec:experiments} we conduct experiments that prove the correctness of metric defined in previous section. +In section \ref{sec:simulation} we provide diagrams of the implemented application that we use for carrying out experiments. \section{Evolving consistency metric mathematical model: Derived metrics}\label{sec:model} -In the previous paper \cite{bib:prob_approach} we considered the metrics for all three elements of CAP-theorem. +In the previous paper (see \cite{bib:prob_approach}) we considered the metrics for all three elements of CAP-theorem. Now our paper is mainly devoted to consistency question and how fast it can converge. From that paper we are taking the developed mathematical model and expand it with elements, needed for the current research. @@ -84,7 +73,8 @@ \section{Evolving consistency metric mathematical model: Derived metrics}\label{ So we expanded the model now with two last assumptions. -Our mathematical model for inconsistency $IC$ will be able to define the inconsistency state of distributed datastore and the time it requires to become fully consistent. +Our mathematical model for inconsistency $I$ will be able to define the inconsistency state of distributed datastore (see Example \ref{ex:metric} and Section \ref{sec:experiments}), and afterwards will focus on time which distributed datastore require to become fully consistent (see Section \ref{sec:complexity}). + For this metric we created the probabilistic event taking two random nodes from the set $N_d$, they can be consistent with some probability. Carrying out this event many times, we can obtain the average probability of that two nodes will be consistent. @@ -97,19 +87,18 @@ \section{Evolving consistency metric mathematical model: Derived metrics}\label{ Also let's claim that $p$ is the probability that two nodes are consistent, and $q = 1 -p$ - the probability that two nodes are inconsistent. -In this paper our mathematical model for inconsistency $IC$ will be able to define inconsistency degree in a given datastore (see Example \ref{ex:metric} and Section \ref{sec:experiments}), and afterwards will focus on time which distributed datastore require to become fully consistent and some other helpful metrics (see section \ref{sec:complexity}) As marked above, we introduce the stochastic metrics for inconsistency/consistency instead of binary ones. We carry out experiment, we will "freeze" the simulated distributed datastore and time of that "freezing" we call time $t$. Thus we will be able to investigate the current state of the system. -Let's denote $IC$ as a value calculated by probabilistic formula . +Let's denote $I$ as a value calculated by probabilistic formula . We are thinking that having this formula will help us to eventually fully specify the mathematical model for consistency, so let it be one of mathematical model components. So the probability of that two nodes taken at random are from consistent subset is \[p_c = \frac{n_c}{l(N_d)} \cdot \frac{n_c - 1}{l(N_d) - 1} = \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)},\] where $n_c$ is length of consistent subset in the system at time $t$. Obviously, inconsistency probability then: -\[p_{ic} = 1 - p = 1 - \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)}.\] +\[p_{i} = 1 - p = 1 - \frac{n_c * (n_c - 1)}{l(N_d)* (l(N_d) -1)}.\] Taking into account that minimum number of consistent nodes will be equal to 1, and the maximum number of consistent nodes is equal to $l(N_d)$, we have following consequences: \begin{itemize} \item Two nodes are inconsistent if $p_{ic} = 1$ @@ -163,265 +152,196 @@ \section{Evolving consistency metric mathematical model: Derived metrics}\label{ \section{Convergence time complexity}\label{sec:complexity} - Now we are interested to calculate the time that can be taken for consistency convergence. -Let's denote as $T_c$ time for consistency convergence (time that is needed for all the system to become consistent). -Let we have the trivial network where all links have capacity 1. Thus, as the input we have the connected graph -$G$ with set of nodes $N$ and set of edges $E$. - -And weight for each edge: -\[w(e) = 1 ,\ \forall e \in E .\] - - -Let's imagine the nodes $n_1$ and $n_2$ that are at the largest distance each from other. So we can count that the time of delivering replica between $n_1$ and $n_2$ is the shortest path from $n_1$ to $n_2$. Extrapolating this to all the system and taking into account that in the distributed datastore nodes are broadcasting each to other in parallel, we obtain the upper boundary of $T_c$ is the maximum of shortest paths in the worst case. It is well-known that such maximum is diameter of the graph: - - -$T_c = diameter(G)$. - - -Let's complicate the system introducing the different capacity for links in distributed datastore. -That means that now our graph $G$ is weighted and weight for an edge is: - -\[w(e) = c ,\ c\in\mathbb{N} \, \forall e \in E , \] - -where $c$ is the capacity for the edge $e$. - -Then the diameter is the path: - - -$P = [e_1....e_n]$, where $e_i$ has own weight. - - -Then - -\[T_c = \sum_1^{n}w_i ,\] - +We want to prove the following: +\begin{proposition}\label{prop} +Let we have a distributed datastore where all links are available and reliable (network partitions do not happen in a datastore and nodes are stable and respond in approximately equal time); the interval between writing operations is $t_w$. +Then $t_w$ is less than the diameter of network graph ensures eventual consistency of the datastore. +\end{proposition} +\begin{proof} +Let us denote as $T_c$ time for consistency convergence (time that is needed for the whole system to become consistent). +Let we have the trivial network where all links have capacity 1. +Thus, as the input we have the connected graph +$G$ with set of nodes $N$ and set of edges $E$. +\par\noindent Let us assume now that weight of each edge $e\in E$ satisfies the equality $w(e) = 1$\,. +\par\noindent +Let us take the nodes $n_1$ and $n_2$ that are at the largest distance each from other. So we can count that the time of delivering replica between $n_1$ and $n_2$ is the shortest path from $n_1$ to $n_2$. +Extrapolating this to all the system and taking into account that in the distributed datastore nodes are broadcasting each to other in parallel, we obtain the upper boundary of $T_c$ is the maximum of shortest paths in the worst case. +It is well-known that such maximum is diameter of the graph $T_c = diameter(G)$. +\par\noindent Let us complicate the system introducing the different capacity for links in distributed datastore that means that now our graph $G$ is weighted and +$w(e) \in\mathbb{N}$ for all $e\in E$. +\par\noindent +Thus, the diameter is the path $P = [e_1....e_n]$ where $e_i$ has own weight and +\[ + T_c = \sum_{i=1}^{n}w_i +\] where $w_i$ is the weight of edge $e_i$ of the path $P$. - - -Based on this section, we can assume that having datastore with reliable links, for full continuous consistency it is enough to have such topology for distributed datastore where time frequency of writable operations will be no greater than diameter of the graph. +\par\noindent +$T_c$ is the number of time slots that a datastore requires to become fully consistent. +This means that after $T_c$ time points, all replicas become consistent. +This also means that a datastore is again available to accept writing requests, so that datastore will be able to store all the replicas passed before, and no accidental updating happen in the meantime. +\qed +\end{proof} \section{Case Study}\label{sec:experiments} -The study in the previous section \ref{sec:model} had been checked by the following experimentation: -we implemented a code that allows to test the accuracy of the inconsistency metric. Probability intervals for different partitions are demonstrating that the formulae is correct - values obtained are around values obtained theoretically. To be more intuitive we took the same number of nodes and same partitions. - -It is obviously that we do not have exact matching, because the experiment is based on number of iterations where two nodes are taken from a given set of nodes randomly, but all we need is that value should vary slightly around theoretical value. Look at the pictures below: +The study in the Section \ref{sec:model} had been checked by the following experimentation: +we implemented a code that allows to test the accuracy of the inconsistency metric. Probability intervals for different partitions are demonstrating that the formula is correct - values obtained are around values obtained theoretically. To be more intuitive we took the same number of nodes and same partitions. - -{\color{red} Desirsbly Introduce not only I average, but I max also - worst case for each graph.} -\begin{figure} +It is obviously that we do not have exact matching, because the experiment is based on number of iterations where two nodes are taken from a given set of nodes randomly, but all we need is that value should vary slightly around theoretical value. Look in the figures below: +% +\begin{figure}[p] \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-consistent-partition.png}\hfill \end{subfigure} \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-1-1-1-1-consistent-partitions-probability.png} \end{subfigure} +\caption{The datastore is fully consistent and fully inconsistent}\label{pic:fully} \end{figure} +% +Firstly, it can be seen that for one consistent partition $I(d)$ is equal to $0$ and when the system is fully inconsistent $I(d)$ is equal to $1$ (see in Fig~\ref{pic:fully}). -Firstly, it can be seen that for one consistent partition $I(d)$ is equal to $0$ and when the system is fully inconsistent $I(d)$ is equal to $1$. \begin{figure} - \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/2-3-consistent-partitions-probability.png}\hfill \end{subfigure} \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-4-consistent-partitions-probability.png} \end{subfigure} - -Let's compare now the situation when we have two consistent partitions: the set which contains 2 and 3 nodes that consistent in the own subset, and the set with 4 and 1-length consistent subsets. +\caption{The datastore has two consistent partitions}\label{pic:two_parts} +\end{figure} +Let us compare now the situation when we have two consistent partitions: the set which contains 2 and 3 nodes that consistent in the own subset, and the set with 4 and 1-length consistent subsets (see results in Fig~\ref{pic:two_parts}). Then we can easily see that: -\[I(3,2) = 1 - \frac{3 \cdot 2}{5 \cdot 4} - \frac{2 \cdot 1}{5 \cdot 4} = \frac{3}{5} ,\] +\[ + I(3,2) = 1 - \frac{3 \cdot 2}{5 \cdot 4} - \frac{2 \cdot 1}{5 \cdot 4} = \frac{3}{5} , +\] and -\[I(4,1) = 1 - \frac{4 \cdot 3}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{2}{5} ,\] -\end{figure} - -Following this procedure for three consistent partitions in $N_d$: - -\[I(3,1,1) = 1 - \frac{3 \cdot 2}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{7}{10} ,\] - +\[ + I(4,1) = 1 - \frac{4 \cdot 3}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{2}{5} , +\] +Following this procedure for three consistent partitions (presented in +Fig~\ref{pic:three_parts}) in $N_d$: +\[ + I(3,1,1) = 1 - \frac{3 \cdot 2}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{7}{10} , +\] and -\[I(2,2,1) = 1 - \frac{2 \cdot 1}{5 \cdot 4} - \frac{2 \cdot 1}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{4}{5} .\] +\[ + I(2,2,1) = 1 - \frac{2 \cdot 1}{5 \cdot 4} - \frac{2 \cdot 1}{5 \cdot 4} - \frac{1 \cdot 0}{5 \cdot 4} = \frac{4}{5} . +\] - -\begin{figure} +\begin{figure}[p] \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-1-3-consistent-partitions-probability.png} \end{subfigure} \begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-2-2-consistent-partitions-probability.png} \end{subfigure} - +\caption{The datastore has three consistent partitions}\label{pic:three_parts} \end{figure} +% And the final one: -\[I(2,1,1,1) = 1 - \frac{2 \cdot 1}{5 \cdot 4} - 3\cdot\frac{1 \cdot 0}{5 \cdot 4} = \frac{9}{10} .\] +\[ + I(2,1,1,1) = 1 - \frac{2 \cdot 1}{5 \cdot 4} - 3\cdot\frac{1 \cdot 0}{5 \cdot 4} = \frac{9}{10}\,. +\] +See results in Fig~\ref{pic:four_parts}. \begin{figure} -\begin{subfigure}{0.5\linewidth} \centering\includegraphics[scale=0.4]{images/1-1-1-2-consistent-partitions-probability.png} -\end{subfigure} +\caption{The datastore has four consistent partitions}\label{pic:four_parts} \end{figure} - +% So, we had easily shown on a simple subset, that our inconsistency metric value corresponds to theoretical one. -Below we present the graphics that are showing $I(d)$ in the worst case: - -\begin{figure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-max-consistent-partitions.png}\hfill -\end{subfigure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-1-1-1-1-max-consistent-partitions.png} -\end{subfigure} -\end{figure} - -\begin{figure} - -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/2-3-max-consistent-partitions.png}\hfill -\end{subfigure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-4-max-consistent-partitions.png} -\end{subfigure} -\end{figure} - -\begin{figure} +Now we present the graphic that demonstrates the verity of that claim we did in Section \ref{sec:complexity} about that consistency convergence time $T_c$ for graph $G$ will be no greater than diameter of $G$. +To be more intuitive, we carried out the set of experiments on our simulation model: having simulated distributed datastore, we easily could run the imitation of one message broadcasting through the datastore and calculate the number of time slots it is taking in the real time. We have done it for graph with each edge of capacity 1. Below there are graphics for 100, 200, 1000 experiments (see in Fig~\ref{pic:100}, \ref{pic:200}, \ref{pic:1000}). -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-1-3-max-consistent-partitions.png} +We draw graphics in the following manner: obtain the diameter of graph $G$ (ordinates) and calculated by the simulation $T_c$ (axis). We can easily see that either we have the line demonstrating that $T_c = D(G)$, or +points that are showing that $T_c < D(G)$. +% +\begin{figure}[p]\label{pic:diagram} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/100-consistency-convergence.png} +\caption{100 experiments}\label{100} \end{subfigure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-2-2-max-consistent-partitions.png} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/200-consistency-convergence.png} +\caption{200 experiments}\label{200} \end{subfigure} - -\end{figure} - -\begin{figure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1-1-1-2-max-consistent-partitions.png} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/1000-consistency-convergence.png} +\caption{1000 experiments}\label{1000} \end{subfigure} +\caption{Graphics for consistency convergence time} \end{figure} - -\newpage - -Now we present the graphic that demonstrates the verity of that claim we did in previous section about that -consistency convergence time $T_C$ for graph $G$ will be no greater than diameter of $G$. -To be more intuitive, we carried out the set of experiments on our simulation model: having simulated distributed datastore, we easily could run the imitation of one message broadcasting through the datastore and calculate the number of time slots it is taking in the realtime. We have done it for graph with each edge of capacity 1. Below there are graphics for 100, 200, 1000 experiments. -We draw graphics in the following manner: obtain the diameter of graph $G$ (ordinates) and calculated by the simulation $T_c$ (axis). We can easily see that either we have the line demonstrating that $T_C = D(G)$, or -points that are showing that $T_C < D(G)$. - -\begin{figure}\label{pic:diagram} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/100-consistency-convergence.png} +% +In this section we consider the case of an unweighted graph. +But the general situation requires to consider weighted one. +In this case, weight of an edge means the average time for delivering a message via the corresponding link. +However, algorithms to simulate this case are more complex. +Therefore this general case will be considered in the future, expanding experiments for random regular graph. Now we are able to present some results for random regular graph, that substantiate our Prop~\ref{prop} in the general case ( +see in Fig~\ref{pic:100-w}, \ref{pic:200-w}, \ref{pic:1000-w}). + +We can observe that all points have a location in the graphics such that $T_c$ is less or equal to $D(G)$ for weighted random regular graph. +\begin{figure}[p]\label{pic:diagram}] +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/100-consistency-convergence-weighted.png} +\caption{100 experiments}\label{pic:100-w} \end{subfigure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/200-consistency-convergence.png} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/200-consistency-convergence-weighted.png} +\caption{200 experiments}\label{pic:200-w} \end{subfigure} -\begin{subfigure}{0.5\linewidth} -\centering\includegraphics[scale=0.4]{images/1000-consistency-convergence.png} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/1000-consistency-convergence-weighted.png} +\caption{1000 experiments}\label{pic:1000-w} \end{subfigure} +\caption{Graphics for consistency convergence time on weighted graph} \end{figure} -\newpage - -\section{Simulation Model to Assess Inconsistency Ratio of Data}\label{sec:simulation} - -To carry out our experiments, we needed to implement the simulation model that will do experiment and calculate all needed values. This model is implemented as a computer program in Python language. We are thining that it is not valuable to present all the code of the program (however it is available at github page \cite{bib:github_dds}), but we count that it is useful to present the short class diagram of the project. -Look at the picture \ref{pic:diagram} below. - -\begin{figure}\label{pic:diagram} -\begin{subfigure}{0.5\linewidth} +% +\section{Simulation Model to Estimate Inconsistency Ratio of Data}\label{sec:simulation} +To carry out our experiments, we needed to implement the simulation model that will do experiment and calculate all needed values. This model is implemented as a computer program in Python language. We are thining that it is not valuable to present all the code of the program (however it is available at github page \cite{bib:github_dds}), but we count that it is useful to present the short class diagram of the project (see Fig~\ref{pic:diagram} below). +\begin{figure} \centering\includegraphics[scale=0.4]{images/dds-class-diagram.png} -\end{subfigure} +\caption{Class diagram for simulation model of a distributed datastore} +\label{pic:diagram} \end{figure} - - -%\section{Replica's actuality research} -% -%We want to calculate the maximum number of compare operations to find inconsistency. Let us imagine that the datastore is fully consistent. This will require comparing all nodes with each other. -% -%Then our sample space looks like: -% -%$\Omega = \{q, qp, qp^2, ..., qp^n\}$ -% -%Then the number of comparing operations is: -% -%$\vert\Omega\vert = \sum_{i=0}^{l(N_d)-1}qp^i$ -%\\ % -%Obviously, if the storage is consistent, the number of operations will be the maximum. {\color{red}expand - It will allow to calculate the upper, lower boundary, average number of steps could be taken to find if the system is consistent or not.} -%Obviously, if the storage is consistent, the number of operations will be the maximum. -%Then the model will allow to calculate the upper, lower boundary, average number of steps could be -%taken to find if the system is consistent or not. -% -% -%From this formulae we have next constraints: -%\begin{itemize} -%\item The system is fully consistent if $\vert\Omega\vert = l(N_d)-1$ -%\item The system is inconsistent when $1 <= \vert\Omega\vert <= l(N_d) -2$ -%\end{itemize} +Also we would like to present the state machine diagram for the algorithm that was implemented to carry out experiments of consistency convergence estimation on a distributed datastore (see Fig~\ref{pic:state-machine}). +\begin{figure}[t] +\centering\includegraphics[scale=0.4]{images/message-broadcasting-state-machine.png} +\caption{State machine of simulation of message broadcasting through a datastore}\label{pic:state-machine} +\end{figure} % -%Thus, in the end probability that the node is consistent at time t will be equal to number of consistent nodes (nodes with newest replica versions) $/ l(N_d)$, where $l(N_d)$ is the current length of subset $N_d$ (taking in account that each iteration we put put one node) +For experiment simulation we had chosen random regular graph. +During simulation we could see that for degree great than 2, calculating the time-slots taken for consistency convergence for one iteration, we can take a minimum between paths to neighbors and it will be the correct choice. Because for regular graph if the path to another neighbor is greater, there will be another path with lesser link cost that will take less time to converge. % -%Can be combined with number of compare operations. -%Let's also measure the number of steps to find the degree of consistency at a time $t$. -%Our algorithm described above is complemented by that fact that if we find inconsistent nodes, -%we are taking the node with latest replica timestamp. At each node meeting replica version equal to current maximum, we accumulate the count of such nodes. The count is dropped when the new current maximum is found. This is actually the algorithm of search of maximum number in a sequence and has known complexity - $O(N)$ comparisons. -%Then, in our case it is $O(l(N_d))$ steps. - - - \section{Conclusion} - In this paper we have studied the consistency property for distributed datastores. So thinking how huge distributed datastores could be and having small interval between write operations to a datastore, we can conclude that binary variable loses its utility. It might be needed to evaluate current inconsistency state of a datastore, to get nodes that are consistent and make a decision based on obtained results. Therefore we have proposed stochastic metric instead of binary one considering consistent partitions of a distributed datastore, formed metric for the inconsistency and shown the correctness of the formulae by carrying out experiments, shown when distributed datastore is fully inconsistent and fully consistent, evaluated the upper boundary of time that is taken for consistency convergence in a distributed datastore, taking into account that datastore is reliable, stable and does not have network partitions. - -Thus, based on the research of current paper we can make pose following recommendations for those who build the network topology of the distributed datastore: - +Thus, based on the research of current paper we can make following recommendations for those who build the network topology of the distributed datastore: \begin{itemize} \item in the case of your datastore is a system with a domination of read operations, it must be sufficient to choose such network topology where frequency of write operations will be no greater than diameter of the graph representing network topology of a distributed datastore; - \item if frequency of write operations is grater than diameter of the graph, it may be useful to evaluate current inconsistency state of the graph; - \item if inconsistency state is close to 0 enough for current requirements, it means that there are inconsistent nodes that are far enough to not conflict with new replicas. Thus, developer or administrator of a datastore can choose as source availiable for writing that node that is in consistent list and far enough for inconsistent ones. But for that developer needs to provide such an algorithm for a datastore so that he will be able to obtain the current list of consistent nodes; - \item if still more strict consistency needs to be satisfied and inconsitency state is close enough to 0, a developer or administrator of a datastore can choose as source node for writing the node closest to the source node where previous write operation occurred; - \item if replica's history is not important for requirements, it may be possible to solve the problem fixing conflicts. This problem has been investigated in this paper \cite{bib:c_ts} - \end{itemize} - - -\section{Future work} - - -In previous section we described that we considered a lot of useful things for consistency in a distributed datastore. But still the research in this direction need to be continued and we have formed the next goals for the the future research: - +Above we described that we considered a lot of useful things for consistency in a distributed datastore. But still the research in this direction need to be continued and we have formed the next goals for the the future research \begin{itemize} - \item carry out experiments for inconsistency metric in the worst case; - \item complicate a datastore introducing different availability for each node; - \item complicate a datastore introducing various network partitions for a datastore; - \item provide an algorithm that will allow to make a decision what is the best approach for a given datastore such that the eventually consistency is satisfied or an approach when inconsistency will not impact on datastore requirements; - \item theory for finding the most actual replica and time complexity for this algorithm - \item consider all the proposed above metrics in various kinds of real topologies. \end{itemize} - - - - \begin{thebibliography}{00} - - \bibitem{bib:brewer} Eric A. Brewer: Towards robust distributed systems, diff --git a/results/100-consistency-convergence-weighted.png b/results/100-consistency-convergence-weighted.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cef03ab574a378de5f7cbe10bf6251841d945b GIT binary patch literal 12190 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 bmkr8k7t~3;l1wz10Hmg*buH(L<-Pv{vj>qH literal 0 HcmV?d00001 diff --git a/results/100-consistency-convergence.png b/results/100-consistency-convergence.png deleted file mode 100644 index a7c9e8be7a5dd9f02b5d8f46a64c67856950ed26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13173 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 Q6pX~qoYGOxR)A> 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≶>jNQMT}kQn6KCgjfxQ(0c|?uPjq071=8D;@Y}h~n(lRjq+&l)0E)V(< za82L8-vfukeqd9R5;7~G=O`rk5HxoKYW2z(L3AZ9hax)RHVX&eIRkO8wG0gEltWLR z(e{J@BJ*R5cr#8t2oHqCY0zli3Ad^fuzSXfHH19B-PMG-)CkolmBQzN+vnT=$ti`+ zW0<5Ggm(ovKvP{k*<@#w$sTF>$KN~XFI>1#0jlA8n=JiI@U@{fuqR#nERZu`F9$oL zmd@FejXhXjUq5}#KGto%H_5?g?2J9qJO?Q0ao!8%Jis=D86j}&?#%V%yMw6#BENcm z&30B(bMqiSML1~ANm*NSA1O)QSx27K_sL6{#d+N_P37v3B0`hZVs;G5qXsu^mPf2l~>(VI!h?rHQv<^fj+x9&J}wm$=LHy+E`9pef)SHE>H2 z6Yp~!$2X3lfU|ai#!8ow04AH+&P@2mK^Kj_L-l$zNQo0}+;59PGmG88r~7hpa;>=(GA0wrN54`2c^b7|`-HIghu4M3!eNnDIzB3+AjnM(%N7Z5P2BhNlAihzXM%P;{o9^D?HCY1>sG9{~c&ot0=TKu^0Dxj}Ll2GUvLje`6$ZroW z`lW;PrMUm7h4xSDG9(09K zvJ-&UUsTKF`zzh^Re|G<+kODV8^_M%Rv-xd4klb0S1Cf-PomZg*g01YLYHSAVBLFkCyTWyD4PfIo zTt`q_Z*PV#0bhbJ+JCfxCeCN25wwvdgIb$bxlo}Dn{TO#5yjwv6|g#`Cfu}jdP}s5 zMpA6PYhb?XnD}cp&1}Ka+an(o!%kp#XQoCjcpyU$Y{H6lfIBOV!V5vmZ;8u{y6x!K zSKUh^b-DR|>)G9Eek&)k%gg(~D3&^u1zbIU=z@k}@XSkBf4>dLT>ZdsC%k5_vT*h{_F0w#$ISporwat`f}1te#s&JKrcqSvKKDR0t4R}! zU(m7gD2lIlY8d6wK-(dpEVL;DoZZyg>OhZx-e!PDo!XSaZnsAQB*+1g$_T`{cIyG+ z)dSM-q#HLR$gzLQ5B3$HM&5=W5&Gaz1Nw)RBzHH*SnV&6L9hHld8!t+{J{)&wb?v= z-1&{kBnNhK0m-7aB_-jEJ$Tv(6ebS8cK{R~JUmk4I2L@(rZeNdk(7PavV2)H8PwoN z!wl6p0<}r*To}KJva<58PflZ_hQ}aUI#Lb*#vX`K(1KF<-+A0_a*w1UN&AJ^s@4TC P07y|z^>*GZ(`Ww!CvCqO literal 0 HcmV?d00001 From b8a2f5205b3d4c279eaa2fece4e1710e9ccc2c92 Mon Sep 17 00:00:00 2001 From: Galyna Zholtkevych Date: Sun, 11 Nov 2018 12:38:15 +0200 Subject: [PATCH 4/4] Laptop changes nov 2018 --- dds_simulation/visualisation/graph_control.py | 2 +- ...-1-1-consistent-partitions-probability.png | Bin .../1-1-1-1-1-max-consistent-partitions.png | Bin ...-1-2-consistent-partitions-probability.png | Bin .../1-1-1-2-max-consistent-partitions.png | Bin ...-1-3-consistent-partitions-probability.png | Bin .../1-1-3-max-consistent-partitions.png | Bin ...-2-2-consistent-partitions-probability.png | Bin .../1-2-2-max-consistent-partitions.png | Bin .../1-4-consistent-partitions-probability.png | Bin .../images/1-4-max-consistent-partitions.png | Bin .../images/1-consistent-partition.png | Bin .../images/1-max-consistent-partitions.png | Bin .../100-consistency-convergence-weighted.png | Bin .../images/100-consistency-convergence.png | Bin .../1000-consistency-convergence-weighted.png | Bin .../images/1000-consistency-convergence.png | Bin .../2-3-consistent-partitions-probability.png | Bin .../images/2-3-max-consistent-partitions.png | Bin .../200-consistency-convergence-weighted.png | Bin .../images/200-consistency-convergence.png | Bin .../{ => 2017}/images/dds-class-diagram.png | Bin .../message-broadcasting-state-machine.png | Bin papers/2017/index.aux | 62 + papers/{ => 2017}/index.tex | 0 papers/{ => 2017}/llncs.cls | 0 ...-1-1-consistent-partitions-probability.png | Bin 0 -> 10314 bytes .../1-1-1-1-1-max-consistent-partitions.png | Bin 0 -> 11058 bytes ...-1-2-consistent-partitions-probability.png | Bin 0 -> 21342 bytes .../1-1-1-2-max-consistent-partitions.png | Bin 0 -> 21655 bytes ...-1-3-consistent-partitions-probability.png | Bin 0 -> 27155 bytes .../1-1-3-max-consistent-partitions.png | Bin 0 -> 23416 bytes ...-2-2-consistent-partitions-probability.png | Bin 0 -> 24390 bytes .../1-2-2-max-consistent-partitions.png | Bin 0 -> 22578 bytes .../1-4-consistent-partitions-probability.png | Bin 0 -> 23761 bytes .../images/1-4-max-consistent-partitions.png | Bin 0 -> 24482 bytes .../images/1-consistent-partition.png | Bin 0 -> 9137 bytes .../images/1-max-consistent-partitions.png | Bin 0 -> 10702 bytes .../100-consistency-convergence-weighted.png | Bin 0 -> 12190 bytes .../images/100-consistency-convergence.png | Bin 0 -> 13173 bytes .../1000-consistency-convergence-weighted.png | Bin 0 -> 16873 bytes .../images/1000-consistency-convergence.png | Bin 0 -> 12883 bytes .../2-3-consistent-partitions-probability.png | Bin 0 -> 27018 bytes .../images/2-3-max-consistent-partitions.png | Bin 0 -> 23714 bytes .../200-consistency-convergence-weighted.png | Bin 0 -> 14483 bytes .../images/200-consistency-convergence.png | Bin 0 -> 12621 bytes .../presentation/images/dds-class-diagram.png | Bin 0 -> 33077 bytes .../message-broadcasting-state-machine.png | Bin 0 -> 30329 bytes papers/2017/presentation/index.aux | 54 + papers/2017/presentation/index.nav | 29 + papers/2017/presentation/index.out | 0 papers/2017/presentation/index.snm | 1 + papers/2017/presentation/index.tex | 196 +++ papers/2017/presentation/index.toc | 1 + papers/2018/index.aux | 1 + papers/2018/index.tex | 58 + papers/2018/llncs.cls | 1207 +++++++++++++++++ papers/index.aux | 10 + .../images/abstract-database-arch.jpg" | Bin 0 -> 16475 bytes ...ivery-load-balancing-diagram-simple-1.png" | Bin 0 -> 20220 bytes .../English paper/images/new.uxf" | 105 ++ .../English paper/index.aux" | 48 + .../English paper/index.tex" | 342 +++++ .../English paper/index.toc" | 10 + .../English paper/llncs.cls" | 1207 +++++++++++++++++ .../Ukrainian paper/casus.sty" | 193 +++ .../Ukrainian paper/llncs.cls" | 1207 +++++++++++++++++ .../Ukrainian paper/phd.aux" | 31 + .../Ukrainian paper/phd.out" | 2 + .../Ukrainian paper/phd.tex" | 248 ++++ .../Ukrainian paper/phd.toc" | 6 + .../Ukrainian paper/speciality.20070212N70" | 690 ++++++++++ 72 files changed, 5709 insertions(+), 1 deletion(-) rename papers/{ => 2017}/images/1-1-1-1-1-consistent-partitions-probability.png (100%) rename papers/{ => 2017}/images/1-1-1-1-1-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/1-1-1-2-consistent-partitions-probability.png (100%) rename papers/{ => 2017}/images/1-1-1-2-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/1-1-3-consistent-partitions-probability.png (100%) rename papers/{ => 2017}/images/1-1-3-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/1-2-2-consistent-partitions-probability.png (100%) rename papers/{ => 2017}/images/1-2-2-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/1-4-consistent-partitions-probability.png (100%) rename papers/{ => 2017}/images/1-4-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/1-consistent-partition.png (100%) rename papers/{ => 2017}/images/1-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/100-consistency-convergence-weighted.png (100%) rename papers/{ => 2017}/images/100-consistency-convergence.png (100%) rename papers/{ => 2017}/images/1000-consistency-convergence-weighted.png (100%) rename papers/{ => 2017}/images/1000-consistency-convergence.png (100%) rename papers/{ => 2017}/images/2-3-consistent-partitions-probability.png (100%) rename papers/{ => 2017}/images/2-3-max-consistent-partitions.png (100%) rename papers/{ => 2017}/images/200-consistency-convergence-weighted.png (100%) rename papers/{ => 2017}/images/200-consistency-convergence.png (100%) rename papers/{ => 2017}/images/dds-class-diagram.png (100%) rename papers/{ => 2017}/images/message-broadcasting-state-machine.png (100%) create mode 100644 papers/2017/index.aux rename papers/{ => 2017}/index.tex (100%) rename papers/{ => 2017}/llncs.cls (100%) create mode 100644 papers/2017/presentation/images/1-1-1-1-1-consistent-partitions-probability.png create mode 100644 papers/2017/presentation/images/1-1-1-1-1-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/1-1-1-2-consistent-partitions-probability.png create mode 100644 papers/2017/presentation/images/1-1-1-2-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/1-1-3-consistent-partitions-probability.png create mode 100644 papers/2017/presentation/images/1-1-3-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/1-2-2-consistent-partitions-probability.png create mode 100644 papers/2017/presentation/images/1-2-2-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/1-4-consistent-partitions-probability.png create mode 100644 papers/2017/presentation/images/1-4-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/1-consistent-partition.png create mode 100644 papers/2017/presentation/images/1-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/100-consistency-convergence-weighted.png create mode 100644 papers/2017/presentation/images/100-consistency-convergence.png create mode 100644 papers/2017/presentation/images/1000-consistency-convergence-weighted.png create mode 100644 papers/2017/presentation/images/1000-consistency-convergence.png create mode 100644 papers/2017/presentation/images/2-3-consistent-partitions-probability.png create mode 100644 papers/2017/presentation/images/2-3-max-consistent-partitions.png create mode 100644 papers/2017/presentation/images/200-consistency-convergence-weighted.png create mode 100644 papers/2017/presentation/images/200-consistency-convergence.png create mode 100644 papers/2017/presentation/images/dds-class-diagram.png create mode 100644 papers/2017/presentation/images/message-broadcasting-state-machine.png create mode 100644 papers/2017/presentation/index.aux create mode 100644 papers/2017/presentation/index.nav create mode 100644 papers/2017/presentation/index.out create mode 100644 papers/2017/presentation/index.snm create mode 100644 papers/2017/presentation/index.tex create mode 100644 papers/2017/presentation/index.toc create mode 100644 papers/2018/index.aux create mode 100644 papers/2018/index.tex create mode 100644 papers/2018/llncs.cls create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/abstract-database-arch.jpg" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/application-delivery-load-balancing-diagram-simple-1.png" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/new.uxf" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.aux" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.tex" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.toc" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/llncs.cls" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/casus.sty" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/llncs.cls" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.aux" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.out" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.tex" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.toc" create mode 100644 "papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/speciality.20070212N70" diff --git a/dds_simulation/visualisation/graph_control.py b/dds_simulation/visualisation/graph_control.py index e14af31..030539e 100644 --- a/dds_simulation/visualisation/graph_control.py +++ b/dds_simulation/visualisation/graph_control.py @@ -23,7 +23,7 @@ def animate(self): self.queue = Queue() import random - random_node = random.randint(1, graph.number_of_nodes()) + random_node = random.randint(1, self.graph.number_of_nodes()) self.queue.put_nowait([random_node,]) animation = Animation(self.queue, self.graph, nx.circular_layout( diff --git a/papers/images/1-1-1-1-1-consistent-partitions-probability.png b/papers/2017/images/1-1-1-1-1-consistent-partitions-probability.png similarity index 100% rename from papers/images/1-1-1-1-1-consistent-partitions-probability.png rename to papers/2017/images/1-1-1-1-1-consistent-partitions-probability.png diff --git a/papers/images/1-1-1-1-1-max-consistent-partitions.png b/papers/2017/images/1-1-1-1-1-max-consistent-partitions.png similarity index 100% rename from papers/images/1-1-1-1-1-max-consistent-partitions.png rename to papers/2017/images/1-1-1-1-1-max-consistent-partitions.png diff --git a/papers/images/1-1-1-2-consistent-partitions-probability.png b/papers/2017/images/1-1-1-2-consistent-partitions-probability.png similarity index 100% rename from papers/images/1-1-1-2-consistent-partitions-probability.png rename to papers/2017/images/1-1-1-2-consistent-partitions-probability.png diff --git a/papers/images/1-1-1-2-max-consistent-partitions.png b/papers/2017/images/1-1-1-2-max-consistent-partitions.png similarity index 100% rename from papers/images/1-1-1-2-max-consistent-partitions.png rename to papers/2017/images/1-1-1-2-max-consistent-partitions.png diff --git a/papers/images/1-1-3-consistent-partitions-probability.png b/papers/2017/images/1-1-3-consistent-partitions-probability.png similarity index 100% rename from papers/images/1-1-3-consistent-partitions-probability.png rename to papers/2017/images/1-1-3-consistent-partitions-probability.png diff --git a/papers/images/1-1-3-max-consistent-partitions.png b/papers/2017/images/1-1-3-max-consistent-partitions.png similarity index 100% rename from papers/images/1-1-3-max-consistent-partitions.png rename to papers/2017/images/1-1-3-max-consistent-partitions.png diff --git a/papers/images/1-2-2-consistent-partitions-probability.png b/papers/2017/images/1-2-2-consistent-partitions-probability.png similarity index 100% rename from papers/images/1-2-2-consistent-partitions-probability.png rename to papers/2017/images/1-2-2-consistent-partitions-probability.png diff --git a/papers/images/1-2-2-max-consistent-partitions.png b/papers/2017/images/1-2-2-max-consistent-partitions.png similarity index 100% rename from papers/images/1-2-2-max-consistent-partitions.png rename to papers/2017/images/1-2-2-max-consistent-partitions.png diff --git a/papers/images/1-4-consistent-partitions-probability.png b/papers/2017/images/1-4-consistent-partitions-probability.png similarity index 100% rename from papers/images/1-4-consistent-partitions-probability.png rename to papers/2017/images/1-4-consistent-partitions-probability.png diff --git a/papers/images/1-4-max-consistent-partitions.png b/papers/2017/images/1-4-max-consistent-partitions.png similarity index 100% rename from papers/images/1-4-max-consistent-partitions.png rename to papers/2017/images/1-4-max-consistent-partitions.png diff --git a/papers/images/1-consistent-partition.png b/papers/2017/images/1-consistent-partition.png similarity index 100% rename from papers/images/1-consistent-partition.png rename to papers/2017/images/1-consistent-partition.png diff --git a/papers/images/1-max-consistent-partitions.png b/papers/2017/images/1-max-consistent-partitions.png similarity index 100% rename from papers/images/1-max-consistent-partitions.png rename to papers/2017/images/1-max-consistent-partitions.png diff --git a/papers/images/100-consistency-convergence-weighted.png b/papers/2017/images/100-consistency-convergence-weighted.png similarity index 100% rename from papers/images/100-consistency-convergence-weighted.png rename to papers/2017/images/100-consistency-convergence-weighted.png diff --git a/papers/images/100-consistency-convergence.png b/papers/2017/images/100-consistency-convergence.png similarity index 100% rename from papers/images/100-consistency-convergence.png rename to papers/2017/images/100-consistency-convergence.png diff --git a/papers/images/1000-consistency-convergence-weighted.png b/papers/2017/images/1000-consistency-convergence-weighted.png similarity index 100% rename from papers/images/1000-consistency-convergence-weighted.png rename to papers/2017/images/1000-consistency-convergence-weighted.png diff --git a/papers/images/1000-consistency-convergence.png b/papers/2017/images/1000-consistency-convergence.png similarity index 100% rename from papers/images/1000-consistency-convergence.png rename to papers/2017/images/1000-consistency-convergence.png diff --git a/papers/images/2-3-consistent-partitions-probability.png b/papers/2017/images/2-3-consistent-partitions-probability.png similarity index 100% rename from papers/images/2-3-consistent-partitions-probability.png rename to papers/2017/images/2-3-consistent-partitions-probability.png diff --git a/papers/images/2-3-max-consistent-partitions.png b/papers/2017/images/2-3-max-consistent-partitions.png similarity index 100% rename from papers/images/2-3-max-consistent-partitions.png rename to papers/2017/images/2-3-max-consistent-partitions.png diff --git a/papers/images/200-consistency-convergence-weighted.png b/papers/2017/images/200-consistency-convergence-weighted.png similarity index 100% rename from papers/images/200-consistency-convergence-weighted.png rename to papers/2017/images/200-consistency-convergence-weighted.png diff --git a/papers/images/200-consistency-convergence.png b/papers/2017/images/200-consistency-convergence.png similarity index 100% rename from papers/images/200-consistency-convergence.png rename to papers/2017/images/200-consistency-convergence.png diff --git a/papers/images/dds-class-diagram.png b/papers/2017/images/dds-class-diagram.png similarity index 100% rename from papers/images/dds-class-diagram.png rename to papers/2017/images/dds-class-diagram.png diff --git a/papers/images/message-broadcasting-state-machine.png b/papers/2017/images/message-broadcasting-state-machine.png similarity index 100% rename from papers/images/message-broadcasting-state-machine.png rename to papers/2017/images/message-broadcasting-state-machine.png diff --git a/papers/2017/index.aux b/papers/2017/index.aux new file mode 100644 index 0000000..893e2bd --- /dev/null +++ b/papers/2017/index.aux @@ -0,0 +1,62 @@ +\relax +\citation{bib:brewer} +\citation{bib:acid_vs_base} +\citation{bib:tanenbaum} +\@writefile{toc}{\contentsline {title}{Distributed Datastores: Consistency Metric for Distributed Datastores}{1}} +\@writefile{toc}{\authcount {2}} +\@writefile{toc}{\contentsline {author}{Kyrylo Rukkas\and Galyna Zholtkevych}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}} +\newlabel{sec:intro}{{1}{1}} +\citation{bib:prob_approach} +\citation{bib:prob_approach} +\@writefile{toc}{\contentsline {section}{\numberline {2}Evolving consistency metric mathematical model: Derived metrics}{2}} +\newlabel{sec:model}{{2}{2}} +\newlabel{ex:partitions}{{1}{3}} +\newlabel{eq:metric}{{1}{3}} +\newlabel{ex:metric}{{2}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Convergence time complexity}{4}} +\newlabel{sec:complexity}{{3}{4}} +\newlabel{prop}{{1}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Case Study}{5}} +\newlabel{sec:experiments}{{4}{5}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The datastore is fully consistent and fully inconsistent\relax }}{6}} +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{pic:fully}{{1}{6}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The datastore has two consistent partitions\relax }}{6}} +\newlabel{pic:two_parts}{{2}{6}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The datastore has three consistent partitions\relax }}{6}} +\newlabel{pic:three_parts}{{3}{6}} +\citation{bib:github_dds} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces The datastore has four consistent partitions\relax }}{7}} +\newlabel{pic:four_parts}{{4}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Simulation Model to Estimate Inconsistency Ratio of Data}{7}} +\newlabel{sec:simulation}{{5}{7}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 262}}{8}} +\newlabel{100}{{5a}{8}} +\newlabel{sub@100}{{a}{8}} +\newlabel{200}{{5b}{8}} +\newlabel{sub@200}{{b}{8}} +\newlabel{1000}{{5c}{8}} +\newlabel{sub@1000}{{c}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Graphics for consistency convergence time\relax }}{8}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 286}}{8}} +\newlabel{pic:100-w}{{6a}{8}} +\newlabel{sub@pic:100-w}{{a}{8}} +\newlabel{pic:200-w}{{6b}{8}} +\newlabel{sub@pic:200-w}{{b}{8}} +\newlabel{pic:1000-w}{{6c}{8}} +\newlabel{sub@pic:1000-w}{{c}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Graphics for consistency convergence time on weighted graph\relax }}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Class diagram for simulation model of a distributed datastore\relax }}{8}} +\newlabel{pic:diagram}{{7}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces State machine of simulation of message broadcasting through a datastore\relax }}{9}} +\newlabel{pic:state-machine}{{8}{9}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{9}} +\citation{bib:c_ts} +\bibcite{bib:brewer}{1} +\bibcite{bib:prob_approach}{2} +\bibcite{bib:acid_vs_base}{3} +\bibcite{bib:tanenbaum}{4} +\bibcite{bib:andrews}{5} +\bibcite{bib:github_dds}{6} +\bibcite{bib:c_ts}{7} diff --git a/papers/index.tex b/papers/2017/index.tex similarity index 100% rename from papers/index.tex rename to papers/2017/index.tex diff --git a/papers/llncs.cls b/papers/2017/llncs.cls similarity index 100% rename from papers/llncs.cls rename to papers/2017/llncs.cls diff --git a/papers/2017/presentation/images/1-1-1-1-1-consistent-partitions-probability.png b/papers/2017/presentation/images/1-1-1-1-1-consistent-partitions-probability.png new file mode 100644 index 0000000000000000000000000000000000000000..765e905cde0f0919ae447b2850a2ff00b5f0d3b9 GIT binary patch literal 10314 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 A#{d8T literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-1-1-1-1-max-consistent-partitions.png b/papers/2017/presentation/images/1-1-1-1-1-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..91b38a939c7e50bd26d94d4311fae13d7ed5b610 GIT binary patch literal 11058 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%0DsYF5YP3Ss;vHSxdN6jGyhe>O%vGER;v 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 literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-1-1-2-max-consistent-partitions.png b/papers/2017/presentation/images/1-1-1-2-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..b27c0b030b9cc675ffa3085c00703e5c4a45b285 GIT binary patch literal 21655 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 literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-1-3-max-consistent-partitions.png b/papers/2017/presentation/images/1-1-3-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..8965454bc99af8ae3fcfa1be4d554719f6b86777 GIT binary patch literal 23416 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 literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-2-2-consistent-partitions-probability.png b/papers/2017/presentation/images/1-2-2-consistent-partitions-probability.png new file mode 100644 index 0000000000000000000000000000000000000000..c754f593d5629206acf7ddb5c8e0b5b4a81cfa83 GIT binary patch literal 24390 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 literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-2-2-max-consistent-partitions.png b/papers/2017/presentation/images/1-2-2-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..18b5a231912834799d342351f5b90782739d2057 GIT binary patch literal 22578 zcmeFZcT`i`*EYHl1smWI6{QOZ0s>0!ML|HCN>dP`(z|qN304FI1nEeT-a&dv2o|J+ z^b$xwO6Z{`KnVF3=l#9k9rup+-oNj-<1&WF6WrN*t-0oU=CkH}<_^8DugP$l^)v)Q z4BA@i4l^6@8+j*qF8uU!|7%Pi4Y6^=D6F}o-w z`k~}C+f$3BV|5uOK}D~Wh6;}CT6@-c33 zMe{j`22AWdbP|Hj-8`-eLBYXSA@JSfXaE1N{9i1V7<($1fFh;!D3hJ59R}_?I5_xI zc1DB)yI!9-GuY_sW@Br+wEmN6M50&GaO=bg2wH#KalF~0(WgK&iZfZ<=H3$$tkyNP zM}GN6s#m|ZSyNzrDT-)j;n99AS;9`AA>jf9HN%b;56;5V*Wcg2J?>QIFk1fX7D2+c z>vH!OIYVL7(i@XLhkN*Cd^%!yWvue^16{DDuxwq1r#2#HRa$T8nHVwB)@|p&hqk=) zU~&00mC$FV5=6{vt_uhVIGgM1N1i@&rrNHTQ_6X?yvr&qEX)Y}_$ysF?La23I`(D0 z1CMq@c0o|aK6`6lPpZODt{z)X9(|?gjdGfDA%6WY`4~6!B;h&mmgA#!?pcg-v**y^ z)8Wl@%_b#gf+{L1&gO7$*0^Aieyp-Do_4ib+u90ANK|$a!Pm|M zkIlDwJrN{q!`g({n`04yH9hG}5KFMm^?M9VD(yVV-9CtoxO^*f`!E3puOBY8C`xf{ z(1r!=#O3Oz7A9EwYmZp?ri#tcLy%THSk?5v%~1cHr5sC?zjn;#=H_6Lso10s#w8}Z zJ4Ghpy_)vYpRaFhd%hI-ZOtF8Wdrq)yfgdRz_IPq)uvc3u(cjP^x$l^7QAu8$j7JV z^y$;~$LOGp$f@1b+fu<`eLgV#e}6Y+C&rv#+!@KaD10D#DtJ5$K#Jh}Mr)2|Pc+@x zPc^PPjgpWfFF>8_!~~c$l`ttRVm|No7#h?Eu%mTVL!&=agSh`Y;xO)n>Z%5GJorL| zb!fq!r_1;(3|wXT?^T2*Hh3zlD%1yXi~Ak;&#yPo$-&!SKjE%jPoEh)6gM%pfWyc{ z?K3Rz-Lg(yR+T)insI4w&#u7EVDZnL95*x=M&Ig$L&xa1tSUGPm!n-gR+)22Bzvnz z;%aT_-Yl~NX>HwwO=h^8bS%U6ALy0Y?3i6nud+n7v>0;A*C8`t$5`U~x-V`BD{e9r zE6D#AeNa&qSdYsoK(@`pw8yJEkpj><4|J@$jm>Sev$~oP@9Q1Pz;+<4skb}N79eMq zSh$L`IUFimu}OYKqs{|m{$9Zdptd5bf*Ntx3cf_J>8TW2%cQK1{sV`^#30vkzM$Q& zDtZCw2v@O@;ZH)^FoXz*6jaKcs}7U$0jSaw%@lGDlk&|3^V)cQ`F5;HYOll2(s*_D zlLygNPhS;`=}Ik+=%mA!dX-Ai%f4 zm#`iWW#pcNqFR~sx+QU)#N!3&eVSV{q@@o8z=+kGq z=LFJ=$HXhjW0I^#rxHZ-1hntVn|#S47l=J5D{ zvK;Dlz$&u6#syX`+33W!e|E`0%w61iocH>^R>O)o+f<$bsaEkM-7)U-OYH(V%m%TW zTR&?XpOx2aajK)qqJCxOMtl^!$~5Nm>8=kLEv!e-_Jfz)MGn|;mG-luFPO}#TY^YQ z$-)UF55LTahEkpG<};T@JENt7jaO+GCI#R!v~J^klm100%O^KVo-D%r&M$%owS=$k zG;9WhHbg)l-kyAy-It|T+0_(eYu*}3Bu1&|uPlpL-k5xG=WpKC4bF9D$^`IgW`TQ5 ziuY?AHd1{v=?mv8!3%j zLrMgiBddG8<)HZ3L|Zp)`Q4`lp7^koVAAU6wYoe0yVIjV+9)#LxLvyLh=nQ9jjsHlq{0VSu6tlB3&)X<%_{j1 z8fpz5c}H-GO?rfTQFi!``}?IJ6uc`EvfdT7CAYWbTD8CZ<=Go|ct~0|`@9r(>Dc+P zvx?7Nd-W>yQxDzdQeYgK4NHaV-Y>36RE#JI3P#DSWK*fI-@dpKHqV71V$$lR7Y7>; z&5{SJ3I^-Gja^!m@L!X2n2=pecG5+(+9S!<1N;NjL8eOEqyj&_0(elP(nZG(S7hIs zDIvhTVK9A@TlQpdeocva&Mm8z9fyJJ5Y8Azc`f;so0Y2r1~UpLTW3PJoNt<;EgQ&d zzZBhO)&97jXK^(tiCII9SaPXg^}n7!JqCA7O5#7L6Dp*M)rGaRB}cb%$#Bf){Nm(u zs-XMho{gY%T2dFXI+PBFOkE`WF*W^H>=HZ4q>!k!h!zHg#l`-DyyQ-m!|OqNHgg@* zA#I0OH?(`Tlkvt!n1& zO;cD>u9&G!GQ01ZWOYv|J(nbHG_u!%v-O)NRO2MT!0GH(bf&wx?^uR4?NpkQO`g@} z8qS`K58>(<4kq`V4J1uUH#cS>qU1ZC!0P*vwGH|CZ3m)t{CY7xiUXDg@5Z~A%xZhS zy!~o>4tgMR=F;2r?^s{h?ke`pi_9K-Ub5FJMu4){JLFav?vr7luF{N8tE>*^P`D>2 zH@~@DmIC+3@=xFnau0gQEiKYF{8Pe_y&FqK(<;dUq~9vfwqmY5OjqVtS7%gxjK=n$ z;y(!9<VF%)w)*e1zow~6X5LxA@L7?Okpl$ zY3=?oy9BOMvk&0y%*$+xFU$Nl9~s2l$hu zF*43K(K>NE<4*InyUS(W+~p09Tee%4Vc~i*2`kQMomhXcBgF|`Y-?AXv$3e|?~e+T zSXJFd>ksz}%jEyAQhoOqi5_6ut&vimc%cPl){8xJrZ=|xyrdB|DSaL8g?NgM$t@w*tXKe1`IKRnO*#)vSk9eC4 z#)Rl5UncZdLxTh?}3!N;$6JkkUQ7Rl0<%Z7V$o3;c)T zS$rlfus?0k(j#;*;}v>NTjO}M{PX4EUHJ-u+wR}47%v=dXw0O#^77vCU-`D4Om8~# zyT$+$b}`P0C$xnjcxQ2mF2ZAL)79zPMt~O*Pll#M7(EDV6@-J7|P)^^0e_n-QJy?_g0aY%9oD2101M7kK?G z%tTK3A`6}astl}83Q`N3RH-XXlpBDzBfY{8TFF%KbbC2%V^Ijym`0ce#Rt z3>AHj&C+ht-FY$fIE-7$Tt2eeehrWGEt@1+G$fW^7JgzhEQTIEH{MV!=@^SD$%N{> z9ClAS*3zPcvG8CJvv5uPS~_zi+KHO(_cz@TJspplCfIi;=YNr~;bla>At6l5RNc%E za@oD1A{sAE4g7raE46Q&vyl#nKSiz}C87Zk9CxNcOVeJ%ceTXFGC=fu^|!$k?FGNS2i+qbs@ zs6i6;(>o(Son)VTV@dCi$z=P}rgT#JyhwdaDzPQkHsF`C?v7EsSHAH-x@T*N%H)wy z{arG)fJHf9DH=Gd=$5t`AnTQ1pzTT00PYHqt&_|lNN8T6YktF2gTwFd*fEbWc(%ldUb^*o9 z+VjWr-C%}WOT@3M{Vit|J*k|xuNr2Vm-Wf9s;$x&Kk59S9izF^>^)e4c ziN?2aRSBe>B;3KLT9v|s7XO9|!+SWDbR(jTh^_8;eThAXS^2teFPUnv-vCyo=oO+nWnFnQQ4nEPkpMvnI>u=yy(B%@k7sEFy|7vS&RcXAh zyBpywGQk3i#bwVkaA9rlnJP*J2M|Zi)JfhJ8Dxh?3MRA*Qb5B{LsFA z^En@l9ze0qdL;^1whN7Gau+^ItOWBC4nvFo0VLv(Apm{m#EF_Oa&kUlSv$))uV{-b zd4=8~RD@3l!?$TCP#DJjbt0lP|Hj@P(XGKCeL*0k4~q%m8uycJ^p=>`64zV*EPx@a z?B_3PvW=<8KCtbPw9xqLuv8k>%2k^nhF0{)dGOu6w>mCpn42F&CU$gm^as<>R%O4w z`j|<1H$&cgDf>MG+fl~mD2GBEwr(hV-6p6+TrC>Y7~^H~z#+s?JMpN)4&fRR+Yy^@sE!mQ=fN?LwD^(0*f@{Qn-7t>P*hnh=WB{Z>r zm+4;)=-D1Bk^BHfw0!wp`l^XZ75@~4?BWt!8^|I5cI3~?l$6dhs&hl->e95DXM(>a z7hGfJe$ObCUf>(7olPOHl8W4|2IzaptO3MdrGDnMJ@K6!Y8--Ttg3`9O}b`ggQ|qA zh|>6uwUL)2obW9@&&4I5EcS#WSVZE+$ zZ0c_d5k)1|`UGfHM_)XFXRpjuzwvg!&@o{L>?jbL{$I8Mh{C57~y=ga*&RoUBx z+qr0(cmg`_(#xr!r2mF)dQ$DvOF?GHt}F2?5~&!$CZpdOFJc(QsU!)qeJ&BVqWjN? zAv03knjX*mju-%muY$ZZ|9c>D_(!C6B4#$GwZ_X~o2w?-ajmVl)^pk~#T%ufi0zD9 zOqo8+cz4_Ov1~j0E-auMi+@G0d+vst5DSSrEzMOvH6hPNM?r9{Kc`P2j4=8PKFBxl z3hT08tjjPZkgjEzo7l;~mQ0ee)qVNd)kdSp0#ntV<{i)}Fh+9?6%fMYA9^tu$$P`R z>LgQajDwH+8;}-xo9^{%;P}B>V@)xZ`GeLOmhnSv?8r8w?T4YWPabTQnctP+`*qs3 zZ=YJfPpp=bTqE&4oZb38K(BimrV!B2H!#GjfZ67X(`^Np19iHCVX4()TcYT)Ru733Jjq^M;`yBgJE!Y-zk7jqkPK|E6(9;$@M>83&>>rawA`t!cvg z?)xi$1d^IUxA3hyH62o(xeQxOO4f)@<~bO(0!_uIvS2l6LKDPk)?d+c{>e$OEPRl4 zx4>zn6wtfY!TbljN*r=2tJK;T)3-SSR=zc?|2Q+$6cmu^Gw#qZ_4q+vsNG z$KrxY3&N9^2^O|^!xV*)18&4&{i=@d;Def)8=TP;Z=Mm7*Ux^WU+$@a#(S?i-B(`a z-3h4}$XB09V+gsOd+HhpETe}XvHVppogkfiT}>Y8Gm#2E1hh*F?Wa4;BiovNrr*tT zZ+xehUf25O1j#s;ODtGy&)=E`+n`xzG#3zv4#l z#hI=CIe8e`tywV;%~+GAlHt#$XK(i4cj@>EI1QfM zHycfMzEj#fDX)vnz6Td-heD5@JSoo6NpLK;qv_q=_F~{vd=!33By2xX?G2s7Vt-D~ zE4S70>SQUW_#WL~eF`-2!!gOL_Z|-9_TvsOHF8xwD|)Nu6e z&n3*yil$|l^g-uLi(hf~D%mBg5*mtZ_X}4io#-vR7M>E_6)QPpBT*%Oo|q`H7~lFv z4uv01L?pVibYh}{cj}r%>L+r_`fs)xqUZ(j-mymC0|}iKj46@Nzx}+zh=aEX%r$xF z+LnbU{nM{>a)MK20@{~P?hK3QSqyw8LPnlKCPnSlg>d?}6~NFBX=V4+-F3NkEz)y$nn)}$|LNv7 z+~rL8b9LVnK}Agp#LNV)s|DJGnda&HAVO|OdXiU()s_gQL;T{zm?FP$C(^Ff{R>D! zc~Z!@J}%NvCZcjQPGjUB&BWCRHVk0^i;6Tv!*^#6_eUyv(H=P{$}i@hZWuJqomE=0 zmc!3_tW}xxC1_=5Bmv~k8cPmH{@|QU6fy6>!dp3r#48d%+{l}q736%st$ zKxf@-b7!0}m*C`53m+`K?IMd%)F-sU?Ro0?$oXm*`+#|QTv)ldQ4xpyP!-CLdO%)`N z^X-DK$Ln}}k?48xg+oCI-re!2yjhu=|G*YQ&lNiv6)o*tPLf-#+Jsph>{j4P1`Nsq zABQkjN5PPz>wfqjP9r^%&l;o{x!{+T(;pQJKJ6GNj4PSmo&CI?+eSSc(GPL&5VT1#m@sRO zV9OfenVlO80yRFL#d39bv}L1D66M zJOiB6G1Zj_lCa5WZw8#QKF7?<0k7LDaZmY+3lQ^XVH!E45J@Fgniw&eWZuYf8#CnS z;LCc7y9ISGYLBxOBO}4t=LicRR!P-=bCjDY8H>#v=`ziEJV>sU@~bGg;!R(yJ-^ko zzZ7QrZKDa_m(?B2-2U-6snplf7^@tIPcx_B@3cJRfohz`9$vX}r6cN*tfYzxti-Gu zz_Pg;%9zE%D_XRE_PjR%Yk~jb8Og7km=Ve>Aaud1ZG7~bmGS-i_xIhbc!rz9o_{|^ zw(|aQim3W1)vs)=?kDGg1@`b#-~5lynbawxYPY+yOxR~3N!1=GR;dca!Pon{(CbHr z%|^e1RLGz6IWBLB4cZwpo#wrP zsX7Jw%JMOH0!~%D;bq>!g?xrt&OvgyT+mA{QP_0&mTq}+l>)+ zRHzOH+m)58r+UrZj1`S_X9Jo@mKY?p7jbVOF9q*I)lhH`wHXm@bd&e3p>RE@1dAqZ z|3@`wf4eWR_h#Px>)Cr-c&Dl6R}Z)<14ynpnz}b*H>e?Gxm)`0#3dw#svHK&5mHx& zX)+6i9gCkh+#S6)AJUh4d062MqWDmqmi~QIo8o-p=zyLP-zL4=k`X4POL+X=g@<#w z!5d*dHz%vw={^mYfc@lmCtfBnF7_?c(|QuNqFOfeoLt)v2BERB+^DBWB-wGt(J*UX zRLrzb?YekkJq@?nl}XhprM7wjv6hya-dJl!#lO*%2c^;tR36{FkeL+_Qo zGEsthWAu0DnY-rZS4ybq)*U|0H1i&QQo&filU6&lPZ|b$I7TY%##l{Ejmf2VJ)3EW zs;hI8Xh1iSGgCa8cXb_A{MzAP&Q|FvsA(A0POlutf?)cTc3qvR(qUhTo_sN=vte`P3Qr7*(# z%DnDisqQ_rv`hol^IW_1AQKpTFQ>Hb?`c4Gbg~Yq>bH6Ce*E*uzp$z;P=blC=7^ZmBBTBNAuc=MIn zZVe40)1XquOZ*SdvH*JNkDM0uq#5snjhX_--4}~h1DQBNqLs5t$3%UNbhFY+8K+CQ zgEyu2^aBn9&LImrViDN4^OR>KX%O_jy2yh9sk5P0rr*yYU))%*aniU-fin;}Fy00+ z$1EZ%O0;oFrz*O6ZOhL3Edqx8I@c|;I`@c%$E@4j{ae!W);S9KLyo(ZMBzgrwk{!7 zh$qR6-<)^wF61vY!Ww6ZcStn)K-1lyl>g2@Gr|?0<6>K1Vkav`yENkebF)V90J-n-o^^#y&sMxm}qk~Lj%{e&9-nvpz*d?I=TN9lRu%Pv7! z*u%GSCavutsCIaq;v(Nx>>8QSoJB;t9SN zaadWIbsqK3DU;bjJ9MTic}^C6SUof0?=*&?KU>aWQ|nf?yO-wQfu(-nWd|CO*2k5< zT@_Yt4z$aQbTcxBUN|k+GZU494`Y{o_*lYDzDJ3a7`Z;T;bVf>(i^yiMJYd3or8^V ztn_8Py3*X=P+gxEJuS;7a~IJiTsAs_To!Gl>@Tkp0cY<>xMo>tJ2rAfuHTYVzRII_ zYrtTdgIb0fwoF%Q{M%Y)HYZy<@tn>@-G5nx{G=AUB#S2#^yK;A~Zpj@|2=gS7;h?n! zVdRREzmekZS6@N}?X8Jd1~D^=d)B)Y6s_YS9s%eXID}%#5EdI`5B9BkoPW^_lHwCc zin75ew!gze&OraOEDupR#rdj zt~8&z|H9P(s&H9xT^BZbTnuGhtFrZR5>8&-Kv6qI&oJFW@9FKXR@x;n$j6+Tw#3wi z-~jjCKsA}7;lz#bOYd;=9BSAcow@Wz9_pd*ZW{$qyZi|L3*x-R*A$%8X3=HnNQ=Xs z)Sqqv8!a6O*LDwlYK=23eLN*)JCg74U@I)$4I@pi6^=t>)(6ze-Ad?kbE-H8(JG#< z6a6r(Xp|Ic;MUOIQwaZlBE~NHS9#MrtT&&N&JKC%dky+eire_bd)Xa3R8K!#0*T_U zkgFLc%`%k$8=uF`M2R8ZKKJ%ZSw-r_#km}dcV@;hsf-fzLKtl!9dC7M8ciol9})$S zL|oq&xm@xq>trUYlAWY@+Z6V#t?s4sYaS+9nx>^o7LO`_Z$At7N#8uWsr1}ka*F&^a7F3{lj6<5``Snf6^SG$dE9IZ zyI5mjtJsZ>lk&=UIP@Y*yJBpU)v`)VS5tkrs|LEx+c2<>VlY*Lq$BHeXW(EB+P1SXA?0gFu#PFe-rLI^s4EiZ4YufmKVnotu9ziT zcBf$4jVIN(v1)=F#Gt~$m6eL1wd@W(nwd?`smb-Y4{z>Q+WG|l`W?|ncGI9s3cE}7 z_j?nj@Ve2(T%r&q&O`sBZUTB#X8AINyxB2L*KD8FKS|ZO_v7c>2n^Gg(8|t?rHaOb zqS5s3q;IzuKZTrf?s^hLAbJ;RY0#8gG*-}7$oqVRpI;(2vdiA|Pj3!8%jHU+)0Oy7 z(_3@J!gmI67-5yF&P;`aPY>sJ%4>346Y@xz_XT=9s^Q z`V1MSJdC$Ndi5h4SS0H=bUwezNt%?^+EpWVz2vvPQ&Ie8%`X?eE_|<3?8|-a&d%1) zs8n^(_lusx+UciB@y)0RX)&APj70|2#@Q#)U7;zB!>b)}xm!&N{^b0uu8Po&8zI-@ zD4ZH=rf#b_!X^<5II62--+Xt`xc^85t2W{wtNw`*pVHPxl*r?1YkE$5y4Q7?CsYae zWjJDDZbf;&?W1@k|G2ilc4(?U5NbK$S!)H-Z%}%viJb~QiDqgAOEe;&s=3~PF#XK0 z!Noz~m{o^#MUOq@_#FL==`@&E%M|MH&{v_)5e@H4V2lAaA_U{diLIn%Sb|b>c3uL` z$dr>n?(C|f|GHWCtf+4EaY5&Rwso+v|j;E92YgiYjJbz+Uw+)BJ3t8WB0u|;%2IEa_>x{ zRW=aCVU~s}^$MhNGUw>5^c05bzWGtV@rSRcJ(~1Q_k&T$nEBap6EfZ#7vvLGV3#g6 zT`Vu<1?Uj><0sAy6LmPNcCW=3EPVF3rUSE=e4I4pj6!a=7j~9c?;mb^Rc2}xa~0OO z{A9XYEdp_R-5(RA1I~;d=8f_FF<}o}XNJKX+w`VApYpkbu9=oG-wge;jkUQ-GJxlS zMc?g0l0tI)B}(JPUS-9l>*hKsaW?ZJMfXY!{Tn9f8+}u_2_-IJmp<@l(9y|ENjX~Q zZGSMKt#e69y;EwK*D>@|Q-4ztj@<4Ljw_>4nmyOZ)#wvpiMg`JQLq$hq6pZJ5BmD` zo9V5ZTw`(G4c@|yrQVsw{E$g5Mth{xhl5aJ-c8<=J~2{rh_IBCo7Sr~ee#S!eQ?QR8>M_a50DlYm^q2tQv0yB^A!nwxyiOzs^^O~-++n-jT zbAre#Lk#EKP&W84#VaJ+wsVGt<4vf?O->VayX2>SQqK1A7S5C7U2jtfJ>%^5e)W?D@$k{!e#V@2XmzS>h zJj16(Z5?d=BqXFb)o{Jc*h@RhW=kMXhaAQ#abigVNw_2+$3GhQFsPyA@RMwKx;>MBI1Do4T}y0^Te3PU7=DQg+`!aVtKk-7B{2 zYur-IQX5chzzPj%A6@LDdvcb;tlF%u@Po5u$vvt{f-mk`1=qtW+od-CO5VtmTpwbK zSqIgZ#)pQR{1U3e1IyNSI23eMChI-Bciu3Dp|;IkrbJZ1 z4>zr9j_X=KUvjFhaDV$-0<+wtf%TODk|@R~Hr_UGN86w*g{J)3&xJP{JhZP#`-26! zy!ko5$ybO-Eoiiz%>4ym__yFwwPX?BlRAPFe96-%p^lphc7K3}tJN zMea!nR``?%88+9IHgp8SA{8Gl4Hfy%ZHC>jD%M}~#kuU$av%bCUKgh~_%fAo#B?wP zV?!gCZ!ZMRUl|zL?AM`)YJ2=T9o(0@dn%bbsJ3m!}-H*_sxwDgh_^%vF-+=fo+cP9^Z!My~E zeKcSEcC=KU{Zt{WGAK3KnDU^`GI|T|=k#$Rj+<5bEG#sy#v{+_R9LA+H?D5xKJ8^a zd`~DPrNp#XlFG<>L3x2cNnofP=&OaMO1!tSF12EQnWeHeC(nvlxunf!Ht^(qZ|fFO z;Igb@%^J`TR~EW(=s4IWy^Pp+msI|^f~H)4E0U+dD)Lm>GuKJ^CO_Hemp~$XY|Zf^ zJ(shIl~&DX18J)7vPu2o^_ccaO-+utar&+{P~7#&cfnMAEf|08N9TfPxNOd@`WS!GCR}jCgn-$OV!{ z%A^x+{Uh&lmcYzfQqyZ;0)&U%J5`dEg$#~)Ym?pV;V}+$u7ho*shHj{*8um<` z@pyYr&Bz;hi0_J7%{IyRA{dxzPMy;+oo}?SWiIz0m^W(BsnP{=Uq2ZP-9Lrc|6Fiw zX{1-zfw}t~OY&hdP}l)J|1dn{9*{>iu9f>n*oCsHW=kgr(`1~dJA2bJaj1x;5j`^< zqLU&Whu|7yymG}>J~2lp$F1qxGOf-a#8dr%_9PT%god|#7fmB)_`FDY#i6;se#f)^ zvBbVBPxU`Q&HrkCm3~40{zSb54QD|F(2bw0YTM(uwokpf^Y1_3h1Ade`#$yK zo(78)sX>RJ=JXY}W=#GkR zQ1%{++LRM?Ls0NkW0Q6Jc@azGBMl7=<+zj3IrX4@EmVLG&}Fto!xQN8{hE$96Pn2S zpaO1eYn$66J9GBprAteLh6Y2oTG_Kez38ZtXI5z&!KFb99lwwA?~l3GKU~u9hu^bc z&6wXi50#-0{iR$d9)Z6bKqo}uQCA3=L>T!U!L~yo;g&z}M*c~>Wp!|!72?hi7tg*V zav*x*6Z_7=%RUk|z`zsVW89mjK*7BRqB22qN46r& z5hATk7Oku}Yd`$VuNNB~{gq!YITnkpaxh%QqA>q`*|DhynjATK>2R}{?Ul;jLXGfC z$;v_gi>qQyyP1)Sn_4PibP)7uv!A`yJ%*C$Ip5U>;OoNacd=<{rE;G03qU1gTxr{V z^f5~1@R1mD{WTn@$pjkh;~qYGln(}Q@xq0Chk;x;3+Su(^=hWpfaZS8a2c!&l-vpp z(v=-?O{mSSEh(Fh3t(X8cB$S#tiH&n5@swI_zHsZ17zXk%a9=rj2nWMI3sb&`o}FE zKFq9k8WFm1S~~{xsceHWIP7mPcJ%g=iXMT!3c=n4ho>gRkG>8Vs95an?E%eu5ojIB zIkNTgaEYOrS@P0ISs569J`4?qUtj_$*qptGv_M`Uvp8xMH3YI@xrX|38h75GeUKn( zQDxQ2xH|gn&e7Oh>*p^0$0mV`w4+Er&!FAukfr{daN^2X7O=7X^pAH-I5e7XFEo!b*XX$?vj@-rVLwxbXScR*jy9|Zz3 z3q12tiFvJwzkh?z%IH@aT;P9u1a6*YqS`3|B;AF*mj<U9DRCBHLh zI8&k zB%6m>K;KAB?G>&COhZc>T*JsF-9_L5pR#Y@XrF?A0-1asZO5U)xQfckAklvyNY!zx zglX!tfpS5qMPngop#iJpG&%>=2_0q6|J#QND3WCamx^VUX4LSft9N2Qf9BN&%RDks z@9EtwHDccy$s~f1{O)YnXl=MZy}sp<|HrU3>E14q|@hCB7$hAFo0! zXbEQt(W8}kF{Ntpa{8Tjre2yd=(ihGVn+v^4K4^40}kNL)JiaGxO5X(&5`l{wlip# z6B5u%&Q1sA{;s*gL~)z2agd!WF22EV`KGE){0%|Up$he&vJ}V>t6e9}l9H0-H`{on zoQ8{q(8|C{7E=Mxmz&RC*SO&<=RIt?6K~z|^Ydesas3i6VxG&XVZ-J|04U@O2bR(3zWw|6xrjxB z5olEtos0)?^8F3HQ(vaW1Fo&#Y;N|Tg3z!DP6?ksXSq%`IQ)2fN=Q&JbWa{Ywa|?l zXUX6`_eZkTp@|xolzZT3};&41d9X6XZwRHu`xi6$Cb8=!{%;70BOq_K_YH` zS@(C-Xiq5EOIu+Oem`Z*O1a2weZ}|2I@%FwcOCflK)bVy_dn4d9_A zu%!GAYSa&h=g%E(8T@adGi` zwccR!nAbQzaCiU4DrtXz{uWrEj;=0U=V{>cF~ufBpsbT)yy(urDtSL$IY<(5c+l_i z^}f~?zIUYg6>XOC{1HF_lV;t&Zq(q?oh;=z+2B364(9(!$k7-o?zuh%gg|;J(t5qh znD>|^2CEp-&Hj@IfFGyg&dNU9OZ zzzX@@fo{hvs~wFOCj!7M9;Sd;wXOIwglPo8d_KmtQSWFL06C-rh%5cCuChrx-}i6m zZmh4b2VIMirHyOy96)I9h^Z+lt)FL&xFV6e?*_VNGcM_P78-(njd$kpd;*m?nB*hVNC?i|F{fAOvWOpK|!QR-*HqxEu;JbH*ioL zfZ2T+YHtoeZXZB`jz7Z`lgdGcj%d9)z{Oz;-^m=M0AjvfZ<_pEtf5!i)sTf$Uu+*x zMHK=Zas+tME_wte9pIZ!%Pdin94EzZ>C=WB6+W}zfC zZVq{`^~!%ER(Apf!U)&W*AUKrAl51X3`0;s!JL6jdXTt^F*Y*Fj^t2SG5}mm6n)?! z<0piNT>fY0hgy&>3apQT;KvnLyUmzT@X!!YW;X?MB` z43r15=etu9R{s5RRrUy!<~{t_e=g1xa4|}Lt?$a{0}chB!M14LYR4fV&}u2yehuK1 zmWwvmi7)pqYaEAECx33F z`JQ1QO)0>umBV-U0kCLr^ZGTY)Vvl*-x!2Y%JzS_Q4}JERq1EUdyoz!xa8~Zifdw?kz4?@Cuf_iSS`P2Q2S+#A0lS2+-U!^_dozfU&FV4#h2%*m zfzNTj0Id0c?x)TjrfUWP@3Ais1o;rKtG*Awg%9tQFa!gL8aUY78mjlSLx+QP{q!&} z>7+bouj1B6J_%F6PoVR8!^2R+Yk4(Z;GB9JBGB4cr6yP4`YX^{Ydl|r3Lq`j7%B(M|mLlUOib7>%sAk=b*vzsAR|2L4$$}1+Gpr3dMtXGExjQ~gC4=l?U&`7(i z84YfB>?e3EC=Lx3+0k?7<>V~(X>tu6)eeuI4dTzne{9|v{mucKD}tK-_TO-^yC|2<+4dvh+pMg9j1Fj?K6loEQM;%E^eV@t zrk1>ZeQaL%_`f~17WDkDL3CDqesm`IAA8qzfuRARNCV=K1JR>PI|{04)_*Y@7y%mL z4G0(60<>BO$3AqTodRXfZ4mN=Ra9_G)&7vj8))2zNSq$bAV%8|VPg zX29X5eL)m}9zHBN8yutFDGBc0osVw~PXpE7IjrUV`x#YLReW*asoakOPX)U*?d9q# z?HGX&rH(>nXY;jRJGL?Z0}Vke$fNfH{D+4C?zxS@9h$Jf0^J8O31YC)TCBftdk*lB zlXS3sh`2bQ3FMyPegWV#0w6x&*HLTt@er{s=+ecD1=-o^5v)@8h&lonwocMO_en1f zhy|x)B_sx-5`Za#1MQDtL0pKya)F`G>G(s62kSopw(uS8`}rWy<&E^)^7?(nZUI1( z{`1A73BvkQf>~}n$}o4W*O+OIG6hQ0L9oG&I^Q2ZemwroDg-!W4md^>fVOE?1)pNk z#+3?dmVdy+a{yITj{%L?83@WU%pVwhXVMqv0Ah&aSVhiJr}fo4?}4+;ag8HV2S{WlU?>aGnw$@)hZNz!iS5M!@9!sA7G%(S5tazbP8}@je^V*s zr5FDX^rk+_91Tagf&)2+?}WRykRUJ!I_AH~6@d9)-nb~`eJu&Qo{!5-Op5ElqNweM zN7e*^V8|*;Dfey!>mtDW$i2jvnDammg!r=x8d3oA{oauWhVr)Pr=2P^E*dPgPykJ8 zh+)Lx78hlACMu^E&`OxFN%4^$NeTei5w!qq?gi^|;o;!`XdVJQt@APm44#gOvlv*i zC2#@^@hgZqvhy)s(MO&6j~-nn0#wK-)!x581<0v>I%tCAH%Kc6V&D5mk+rSuK5z*D zG9ubwPbVBnWhfg_2qO~{lXt!KE*R;!*w}v?{{ukdKR6Q< z2%Ih&0JP3DsQ_PgneDvCt>nM`2go(H!6cko!Y)3`0>br`0>B!F7nTVi=p1QsfR@0d zVB~1sLBssLGM0b4_-pyYz>6gATLH%}1p>>Rl`%tL;o{+~s{hD)dV85LY3b=@z;)v4 zskJzG(a!S7GT2z6lb24v|ud-PdIoZk~$TmH^b8Yo!4cjQ4cfJoiJ)uR(M z;AAuKG&%;>d~m8vRzbiQYyJ=QiOm`gU~3R~MFM!gg5M(g>z$CL?9clBn{%B7Lm)B> zc8@@^{@eC|3-|#i)?BO^Dl&Cy4yN(nXkiiFc>*Z%5%oHiC&&X^oa0xGv$gY?o@wDg65`T8#v z=zXv2t(7;4t8?`X@%m+3VF zjybT^t5ODb9{_A{=m1113kXJ9@?u&-gslH_u%&O#%*;&OS}L(bnWf5m-}49+3i;1= zbW2YO?o2VNuL%ME6x`4;5~s?yIF|q$2G7X`v&*lmlU=C+A$!kA2wX5Y=fp4t###*2 z(Sia3n(6TUf_)O9?2?F?JqVUZ=iY-GM+~oHQwq{gl{Yp}+<43BH~Y`g@MR{wJ_DAM z*O#SPl#$Wg`)^9*28?zJv?xe|9jE;e(28nLyuNn728)H!;=gR>92boCDPX!stXTVD zqt9y9%Z=yS{U8v`ZXLS@>>$`V0=+z<4-qohPkcu!f7I%5gyKg#_(+774w62Q*5jrg z+RLZkfgFiZS=yD4ib4BcB2Vh>YqGn)1z0E!2H0Gd+49cs?SGOR?9j4&lj?sl2&eCg z!9dD76n0U#%6r-5-R-aCnD>kvONIqU3z1Mp^8#cUSZ_Ul3s{!Pd`(rAB-qEh_y4un z{4)2aqOvA4e5!Anv>W!xIM*MF=D)1-N)ui4!9n2M+#E1vYwvS#uj66BAAQl})Jr!W zP1yl-25b)Orbb`Fupd4(?+xgE22Nl~+28r;%BAFAWpFK=DeJ?3Myz;pwuJ>Y2oB+K z!0At%xpZAbq+}b6rpk=#C@wDX09(TjH(8EK@(qAK#igw|IUU8sr@P4wVd3FYfx9n$ zfS{v#elHn$HJiiGX%W56?mn>VUY)q%K$AY*Wnc0KGzX9yd*SBmS+w90X3K@joY zV}-!^*7Jz!$5eUDb(CX}w70?dKgohwg54`nN_H8q(guINmT`ke92*Q(9|BRX1ct^Q zy_*Eeek=bE6!fL&h^x&FhJrL86#VP|^mdyib;$bO<)dF0Fw=Ze19yQ!XOZiFXR)Hk*Vbm2OeoEuDRP%(Ytt1whV^!lgV|5AUg0^p5LO z-{+3#1GjOuF7)M=)%*X|&Y6cpxwmnAP93|BNXVXpsK^#$Ka|9X>%Ct8Fn^5a_dL)2 zyYKt^xqtT!ZePu30u6Iz%#e5i&;|^7xbU-6x$`Z=N7a9Pu5J6+BL(Dk(95d@i*Ux< z0^b3ThJ38YU$lM2Q2Hq}79p_ZT(*u486l0o{6azBw@=8+_e1AIAwV&&mRMf@ zdYp?(E-)oH@p%skKGZE(j3$~`aCVSa^d=CiSxFt=*;en)zivGu0gmwi72QM~GOiXy*5dkd5BhQPX zdJW{806e8ThQ2-N=H}M=Wa{5B0XUH#t_*&xL&fz~xMAF|SUF@QPAH7T0lT{R&UK}3 zMGq1I6OdA*ptXME^w22)128_wy6y?s4AC@Bxan`go3g~`>c;JJh_Jx*W|uUCZOYy+ zgzq$9fXth8c6Ge~MK=U_8e?V332E30e*5wPxK7jk(IfbEtmjnK;E;MdGTXU@hmAY=A~(N)6g-gm7_?K9@c;4h^w!Ew2y zspzv&;AapbpNR-Ud45jtsFyA|g;n`9tpBd^Swin-4Pv$+fvADwNWBG8q(6RZ7mr^$ z$@MQeh~NWdU$CY@xumHJFyktj9Zb=d9#{nPrtIhny1EWP7>9w<q^UWx z74myi3kyiD)k4aag zgCa!4D!|qyz;^>+2}|Rlu}G=wfQ61F$VoHvvZ}AQD*h?x!`CM&B(M6_+kuCUDssm(U~fbl&0W}teSHZO2MY0WkqTz1abX9$_5cg0(kg~9hW(Z1?M0D2C&eN z&^a~;{&M>hG`XtUppW_vO0c4dIg9BNcuf%pf4sW&- zdi-@pc)mmTemwpzK%tF`ks#>e>KZvX_@i5*O>a(fv%&IIqXfvz@XAWnh=_>3fq}f` zc=qSnx?H}#zG!Xj?`36K!@|M@vPQLfoHxQGyId+XGc)6rwc+`uW4$z&<1Zh{`7k$`D@(Eof+ma@Pg)CMk+E7Y~LjwU4~;XxWk z3;B1%#>Z1m{q$W%$y)$^+^mtYN=xf|0BmFKj0AL4QK=Zz*?@pb{KLFFLvL?yte>CX zOiZ=P7RR)dimqaxdQ^Y93_rW#$od>0STnibaK z;pu7nKBI(1|4b`| zo|$Q0-euvEEHb}vflo_Y8}7+>(K0Rn`pV>C85tI^4?jGZ2dp+L9?0OGn3~%uL~8+bUC=ktN36?CiFMg~G8A-0r5Wot?6dP6E_; z4DR>;aKHZ^jV1tqqR&IEZ!xf&kbNUG)D@H)&I?TKSyK}VB^UBRcYgQ!Yzqe#i-q|Z zVeFioPk{;~r=`V!4Wqg@d^0emg!-KVHW|_u^HxdewFOK6fB;H?MNVg5Uo!rjx%pA|BvDPNhK7a<4h{*?7UL9xq;iu%^37XKhMJsm?LHR{}Cp4ZXUouBKVeDO8l2OiYdJG>kp zX9>5j#T&sN^NX*POyibe8|Ge(WZpFzt;Zs|&y7L0XJ5F)}}0YUmvC EPbSxo-v9sr literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-4-consistent-partitions-probability.png b/papers/2017/presentation/images/1-4-consistent-partitions-probability.png new file mode 100644 index 0000000000000000000000000000000000000000..1c60c344b558d8236fe17ffebc6d083a29cf31eb GIT binary patch literal 23761 zcmeFZcT`i|*EM=V2L)6_r29xyP(Z45l#UdoDo9bJSEZMP@Sq?fU8DpE9qApU#|F}S zF9GQ_NQV&eZGP|fj(f))_r8DMKR(7#6O5d5_FikQx#pVNu*W)Tv@|R<5CqX`s4MG1 z5D5~3V6#*d;5*{|Qw!h^GWUlX22|iHfa=wI@SfUD{h2!i(Z4wV1^c3qXAeO)APwaQ z20kep)4o0iiv%KZlsky*E!ivT@XL>{s$7aTt8xhcBZz(ZXgb|)^N%3fB%9x^_?MB& zrrI4(`)b2Lz2XnW0g5@9Uv827p~)oqm+JDRD^$_yA}tDAGg7v^mAsYtZxU=7PNN#|)y_X>HE+7P=f}mMZGDYw==zk#a z!J~_?OAv&yr9y&l$tyu*5VXzwfBwn;bH%!Oq2_}LN9pyV%AsOYNpcdH+~Jh_Yobkm zri%1ZqLsnZr(b58{MTdDI5dbMU|oHR#>p@R1^l$vg%vApx;0l0)<=p5nQc=t;&h}n z1dL0D#7CcJp-&h1Ov)@DB-dUAn_wDbDSUm;k4x|FC90KiTlDZ)xmDJTO~?9a5ukJppP|i||qN{W1O1x)M@hVKs6l`TQ zGr74d(zwQHJab@RAbMT%(IdlW&+?o64+{(njcCtu>+4O1hllqSMu&%2QLfETLh0DA zQjrZbcSBJ6>c8L8y*4LuT&C-93-zL_g|QTv*2H^OAue@`*GeTxAt)Qu8o}z>_khy3 zi8*cC8QK`g3Ge9aR4Ne=5;A`M`t{E>G`DuDv|${dZV9n2GxH%OXF!>R%hZ=YfBsat z2tkl~L`R2ae0+Sq^JI;=>j&EaR!A+9E#G%{>D}|gfk#623%_HY5Od4Q9>06{j>e{ZM4H0krJ~) z3&NVQNt0joRtph9nCB$+Rgaplw;zBfc%@lMjqLnQ=2E|GvV5#1hGQ)R3w85)*sT-9ysH-5yHF*)> zeLP92a?!LDu+o z@y@QTIT#unj}o6hdzO^U2Y@E}L3bv}*!A#hcL#8YLz(G7BEh8m<-0WBCFZ8>?-%O# zM@+NMx<4|D8tCci5eSM$�NU0|(f40x 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 YZdzpP6UBWCLJLImcRjV-^Z5J!06!5ew*UYD literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-4-max-consistent-partitions.png b/papers/2017/presentation/images/1-4-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..78fdd080867a42463e6b1cc12c15c5341f321fad GIT binary patch literal 24482 zcmeFZc{G&aA2)m>R6>yyp+yv-j9r$BELpNnc4e0}yUEfjgd+PIA?sMO4n_%)eH+^# zvNL0y!I<$}^ZT9WdCqzMc;A2D^PZ=3I?c#^&vjqdclmrj-_Li#AL*zupX53TK@hWs zx{5vo(S|}0&CGEI@Ds`Y$$#LVV_x?(43C39FOJ*32k%dKsGE2}5bG1_Uz%@9`A!gY z3DQuxYv`Z0h7IsHoF`K@5kJ`oWk?2^f|C^|-`56NJaQH}2RAppIb67;TjXd|`063Y z>b(-9hqS zSu2Adwm7-C?efV{f{Ozz=H6AYCF)wU?9V_n;O#r;I0T&*Kc);pp&u_pv=H>>6wPU{ zK-=S?;MXqShmJwe@e8zHmAl|FL5o$pMn1>AjlV0SyQ>GU!fZ}`ZE*|L*Vynkz+OPnS}KTzm2)At>>;2)!HSdRr>sF z1q3NND6}y0LCyhT!hN{hMs0rnZRNRh*Gf5P5XJ&745E1z+>)gy{Bx1DLIaoJ$d<^54c(0zkhO}lDXhv=;`T& zL`CzM&O@Q5ueSYIjHu4^k?a3@*8gV$%X1+}5xC^aKyDU~@@0hTW>6qi`mR0JPP%n>d$AWj-4rD0GJ4B( zs$q<{8A4vQ@|ke0ar*h@glUCsct-GnlXkkC5qhsx%(-@+YHPya7GE{ub_O#khB<06 z#=RK|k^x(`lFmcwy?3@h;OCCW_>k4Txfsl~MDuJ>i~6Mxu%5nFPAl^#!yr~?RsRWx z9-EpL25c`lE%kk2#Q*v8XRz;AF1V(X0r(>z{f_kUx#D3eu$ zY?5>0+-M3SeRrR3dd-*k`Lpc;BY1{ycV+cxia(fC+AmW`cubtGV!{6Q;%aW9qzkV;#dD0+Oi8ZA3hxZrgv34RZ9EngAX$PM|O!8 zc|7vIOT%!hC{hZ$?j5~$UPLi(;L?}ZMDl)b$VfcgvLIdFPe@Emk(*=$F)=Y2nVT1b zNMN^@4-RJd%YU8ji(<&43Vm5H`GD(|b*Oz$TEIpV2x{GFvIh6xo!TU)U{QYUZyV%% zR@7tJ>}C%SUw|NVa{)N7vTGc>4Rnnfr0Uly{z!PtDD!xA-45L8SF3u45sl(iFpZUP z9=h(cGNb{b-)DYiK1K650d4&w3R%*B!@A^g`8~g>fc$r?e8IPlgC+gTPCF5LRV{ib zLBvcV_|V@K#9#8k?%;Q;m8nM5J7(@YV5loY2D%D+0bq}8jW5w`5Yb1C zzW6B-je6n~Vt2EhZxtl1;huE)U1}Z&*{~kpM0(}O1&+Umi6459)Bn20DunE#us8Es zZvL~u5HM1nki*Rs38z@gz~$UaDF9A=+@?)E#ul!^uaPR{s-LMC^i&Z85`2kSjp%!O zu*iQ6%>pkc0~XVrhrWH<+S=OL#aOL=%ZZlTs{`rdK@_(%OCdmokgUi@$bUdX&}po~ zF7_+P#?IX-lD9L#4Fk0@_Ng@ ze3qScf~Z9y9V3f+Y+Dp}el(9fb=fKMex(2f+f9^=6qEulB9a`+q>0ywbe!4KBp ztb^TE#$gHSCFj)XJz66;R{C?oL{V$vB9F_I=jZ1^0K>eZXQD%XT9N%iEFj9*Ykm)~r!e@Cvm6=PTZ|28q zNdUIK#!Q#ngq1cDOnsL6?(XmJ%N=gCNCLFhNqG!5sp{S(i)P}aR}7c5TX7g~pt>~H zI}U(Z{u^9Tg+U}j{qBev6^nh{O*6>X86GXSq2@nk-aC(D6c4^p9og`o-tw~ zBE!r1nWfdP6I5)tGE@);tnB{$8LF2l3%slaNL9%GLK48(#w!5~th~i{Uo$KNKTqV3 zPfRQ-D|>{o@Jn|?tykB!>t@_BVO7}qNHyQU-4&x1g!ucjQ0RErw%@s%$FNn;-~eW- zfGknqy(bJlw;^C#!h5OjH4&T|HPKSRH6GJI7=OkkZu_44^dK+j0D~ML6Q_|C6%}u$ z9RL;p$U1x$pUGe7w`a&T{>B zkNocMt1(N7=tH}oc$nv`3dh;A7Z2f&A1C!^g2T)b_@@FDe*kH$%5}n6S7G-v!>RLG zpRTH{08hjG>xg3y?ymKm0|DX1#&o^Us&iQ@IECahqsAV|L-jt-h6@bTR8>`P6FE6J z3c&t1Sq*-<&j@Tn7r2|Ozf}yc!gr@Zf%t@k12@$~P{SM^9(GCbf)9Q-|Nodv=VFvB zg^i0J1qAH>ASH-dm9p^2m9gFi=I11P=D(>lMcghT1A&tjF{x0oY5UL*4oV_$$5CSd z*tLY)WbNx1KA8OnaJ+e$rHUkEg!@@Q+V)*misJ*>)I@L4}yji)6ibu0CER;_W!L$ z21gvS*TTn}_G-O}8Ti)9nLWACstc>fX`n|W4@%Fglb5IuaPEH=*}qN9s?~cHgU8?Q!? zR$@d=iQQEUCR{M%n=rCLe=*%JV{7ZW{*@rJ>R-X;hAPl8s9A4rdF5agNkz0(&cj0F ztwi+DY-=PHXblYLQ)As=zAom3U|JT~_afa)#e;uwy3Y0CziCpX1&=_fbE|0cq&29P zs-DklQtyEC0$w~^ke^Wqva%7ofL0#>Ki@&+2ZG7Bywq^h(r?%I+W`w<62;gY&MugD zIEoJ@qJ~G={)r2PLJ)r&B>#{9Kd;V>-kiDiFk$H}r)6IlU+{StQ!TYVlX6Mwk;mV$ zr^^}m1~Adb$5C)-u{RS5vI(_*OHn{nQ=D088jW&TM4U z9*2~lnn*IqC@EPzOt^WX{=&EU?EbxGxc-%OEVmW{ScTNfE?QoB-(o!3&dx4y<|QMG zD4T-Qz}FO)bI(;g%g2r|&$jIgycSd3Swq(&@gyj022qdFo$AjbS`C$gP>(}cH?I5znAm6;Vo^`_^+LhLmVYu8;SqqW;)kYyV+O7iC)wvh7&qinv2`W21}7ZV=xko|hkJ8rG{PBz#s3qb|T6 zNKe0j!Gb>N;j%Efk&WFdr=e(O?n8HYm{?O;P2FkL>f#VAnzoY#we8-uv?lz9fPRt8v_6{R=e3bfxcd<#c<{n%hX1*1tG$GnyA0cb5~D`Z~f9G|D1nwR~NHDQBW z>7KO5Q(R&sJGg(d%K{52I0W%8dbo(}o)Z|KaKKo$l5~7Fn3a{s+1+79#(O68yY)-* z-k>gQyCJ+bQ>lNmBj_kkdw7D^P}})`vbbpzq^> zj!0I6*qF)Be`q{#=1zT=mP=8u+%)d^U3Z!soht2t9_L4U4`>i5T0CLr#H6sr(YlHq zUE2b)!4xs{4jw~Jhnm#`gsY;6HF8eMfqwJ8Pj9V86qX09l9^R3gZR!+f3etkh2&$3vGpa!+QdNPCES!O0O3PlaWxu;Wz(!ffl0s+Jh} zCFYBc?hb*cW-9Cij%nJfWuFuIT7Q)4n_MvWv1Yc$54kM+jU{-_u(3Tqh}6})K8l{c z`66l!!1+h9+5L`v+Q-dJl7nD=xSOh17JTJsHdc`>RVyzV-y1 zwG|+pbRmluJMSvrZ?QU+gFjXSAv%72 zt3w(qqy2}tB6&!2;pxsQvYXUU_$Od}!ogu|q~w`cu_D>9em0_0$^A+&yH-QHAbM`N zEowkd&8|t|TfMSSC=yMnC*ZI}plF*8(N2*76`4u9!rLZ4_vNydu65T5eKYIrR?hAp z{$t{mw;ayP&>-*96*w7qp>%lIX>-@`w1jH0MB15Yiaq6Mt#WkUt)jy{*oJa6%j7gt zyh2h8rnv=gqj8(&@EUtc zbVDsxwj?`YvhLn;?c^t}dX9+~SfQI!W}mf2jBYxE%hNp{?7k2~o1p8&*+=EKD}^|e z{oLDQLT*YrJ*|I}9vQw`8mA*K;w$B@I%(02gRUo6J2+pqTinBb4fkI9vQUkX>0Id6 zFEWk~3HDRP{fp~HIB!1P4uS=BjW&$2=*b*7dL16l(0S>MS8F?u4ZMhk9;1%w(_93^ z)05&y4v~30I?yZg_Us#X- zdvS4V>+AH9<-xkUb`7#JZ)&`1K!Ny`n5IKtrgya#^sdO zAJPV|8T5&`W%}lHc^hIQU?LBQXxMa{%T~9vZwC$D*S+e=mG|;ceLKVaJ?V{+lJep1 zLc_O(kNr(XJ>GDFhOg(Xz!*~24!0%haiKgtK^Bf5U#GP zcw>GsHAYZd(_Q@~`<9%qMDKhlWbZ6chEfPR7@e3pX>BC)rC5gtRyv}PBRhy~#w~Ko z^eI7Z({59+*s<}xyY#mZ^lZ@f_BNm}b1pUcl$0ZCmSd?5PIu}g50u_}Z5FP*kumc; zYWkG5n(O0}ZQzGR0XL+p4YrziD@$l=eTo39xJiU#5N#(A0Rh#dF1!NiZGTdPSOb+5GYX_w&I z{=35~s{@@3!LU%CsuEiNl>&mVs3FvdY`6PUv0Am)#x1369$3(buBXjnC&>AT4+nLG zbmWcKmLymuTGN3-LQqSf}of_r~aBDui|x`UHp*UTN?u4m5SVhshfEQXHtPF9o#0|P**ji4r$ z+wOwxj@rZwTd!7xP1AhMYG&aoy$;nEo#=TJ#vv?@*(LPI+lLI z>>JX|Tu+527edBoA#RCV7C)jhk0vRW?3>_O3LQ>a3(@o;E^|d`N@Mxc5v51|*3#~Y z#kRqGJw(%rU#I9a7vkYx@xkyES=j!ZluMZ_k4#^hZi-|jazZsyYobxfD~x49$_9ie zP~}iLa{xoAyc(4?wm_`^hlBhNpax`cU)^Fx5#ZET1eNx~0hL^8=2n-Rmzu=E#-p4@ z_xBw$g>*}9Qm~}5r=kXC)L%;pWTzEF-$4i@+Gf+%TEFye=Nb6!G@!~kye9Pk_c}OL zihytOv|01-8UHP&V)sybBSXPA`Ky#`SG||g-b?Zey96$cHlBAV@9=b=6|%x`TaXc! zrmt?VIQnFkZ9SJ*)9B<>b$5e%+$K|KGB4d@Q|IWbJznyh&-J%NXIPaa<}O$Tn*{Ft z{WskrPxI^Vn;%=xC*G-)qNf^gNOaTl=|8fH0AB`ZqpXS=1IIi=Cu$sg19)t8z*bz1 zmbrJd*RJ&a#r|^(|G#g?%bvWZ;-(u0d5(bPp^`m$TFKdfs8~&TR(fJR!GnXo*->I& zu^boofyA5<4%K?)D`dG(yN&q#VMzW4)eClZC0|w8*0LW@h)|(3!x6QRu9RC@xASr`v8n}e@ws~yVG7ZK4uc6GgUO?~QNwnc zg!r)&+z%54SRHYTp1KmAe3^pMI(sE%?eCJoC&&rLs;eBJk183% zW0Xn*;jwmB*yssY(LTQnlnixMEtyyMJ;4(dhbE!boFkdXtl!WR-LO6Ud zpy_grn*nwPB3tT42kyG4_JPMgYFzAr|?|Ic4i@iVa$qiZ??Z0>_jZRNOsF4ylJieG7 zpCUqYiyeS*qiw>vy^Ef<2V?U{Nu?k}Ib5{wh%$38nZ&5&5Ozl!>Kc`}g+k}&3FN-A zFX@fv!$*l)CdsltG!`5JcJ#K1%Y%ZO2fhyzk}%eo(oJLy$PiVYde|V67QEP&w)vCV zcyBKEUizF_s+2FBPbuu;(?sn;N9lMK-~r_I8Y44739hR93@ez#cg&F?AG}<)nnWkt zhqs;|nJnwC4XEIh1(KOK9cY$psS)DSk~@3UxXn|P?}FdD2VW+ILfj*z-wxF$pxs&u z+vsMf0ZyTZp@w4*boX`_Qr(TcA}e&WaaK2~AW){(S za#$+matrYsWmHXj-7e%>E043B_j~MwOgfsFp&(U!t%#x_;3!K|TEWq*)qTvetXb!u z?5^R_%!>I3+_;_CrOr-$yvb%NH2V$Siz};qsye&AkoFO$?tQ!Zd2SGk1MT~{_gA}! z+lrZ1^dF(5bSiaX+3*-N^+qHy<~cP}fe+2h?P5TIzXTZR|1=fnqUCi!2hDKMHZfSX zun=tWt503w7}?*AB)3-BFMZccTb9#z{q!^m{|4);F0{|bFLh3oTfbzk$WIs0PIFX} zw%6Ll|C(vwNb|g>ojMMo9re1y)*2DH&yZDo_-Qd9syOJKEAf~8V!b}TSAusot-#f@ z>y%-A+#BuQ>E9um&m#S5ib!zan4rOB}mN?xLmoe`kidIZWjZ=oh(`1k||y>dsB zZnc|s)9QN|Lzya*m)_EELr9Ad_g7SB7bIZrn=0%j8lVxkZri^wD*2G)BgM=$3A zC^d4a9UH*Cy?l5MlJ_oSEH$Lf^0MywQ^^qp%-b$sykU^cbJvefEvGtmj^}9612^$fc&b5iY%_nAZMPW;QVSKg9J(K7D9Pf2pF-@J9Lo3#d-SFOWiEwUk5MhIN{8_ zPFSJs4r$Ur`yYDX&`@g)#cK@tdC_C-sF`%CADm!LNf_26w`Y%xraXhn2*)VW3)vNQyX1u05eVNeQ zPeAoBNoEGudmnBZnQi#aYfj9EOnOo{S*C<^5=HIv_UaZ>V*GHQDZ9wgcK`cZBPI4v z{5rf{rb0RS(Q8Ts-~op>Sy}*yjASr@}1pB^kA> zhMbm;?Os6}cgy7EYuk5?3~6>0r~Y1C4S(1T)u;lJLQpcW>i#rI4SRf^3T9ry_5lBZU|J7A(ytgFF{Xtm}?O z^3(0z;STWe1d-|q&$$PK^W=7=JmN(hdk{c-uZH&#NGo??Q%07g4vE+kyFJea_2Qu< z$BS8{$IHwP1->+57S2|c$Obml=_V3B;~NQHSW62KIiZ@^xIjT1P9NS~g#pmX-z0Ux}Prmqq2nJQJybF6votRwV7>c^AoIKt*K}GXuy> zp2?fZcaNew;))zZs#i{iA{*_6ZcaT)DDJ%NQ@H#zzUzF|=3E>+CSNPOi}S3XOcF@)0!Fiz*pQ zvt8WQlOd~vx-~UL+bRb?7|Zz*6Ep$j-Kosn_wzg0jHdZ~h&lv>CqZ(F2XD+{(Ht%i z>aV184zOs8ndB~GXM+nzg4d9cl%sXkLBf6y*oeZ?f&=Zi7S1wBWnjhP<@sb0x^ z;sF79E8b&v_HAD>BWSZo&}g04+M@o2OKBhcUSyMmh7eT;^N9=A3Crnc4-Knmmnatg ztiEA9_K9AP8|9izKb;7to$+h3K^YD(hq5Zz>ZtUb=;TpnOaB)UX+wv14|#U4&kz0V ze!0ANd_oGew4k6NhisSg=?W*5wYby-3UM?qX24)V>2Y>7ZoYYQDUzFi*m64?*G->1 znQix3b1Yo!Q7nor=#r1GW9D94Z6}+e|1!uk4P9VNTAICSLccL;v%YQU0C}TB(wXEn z0@rSD6Lsy_KG!fk-eNsOlPqTOB4cx=b8X>bOOyHqP#zZ)XK^vWYGM`h&<|@Te7j$cuKohDDG$l#^4XdAN^b`T! z``@#u_ttyOz$^iZqHdoDuJ9Sq>7hzv-k-TTK*_kPUPU|F6tt!#ePcI%mfcfF>(hJL z$Jb7VA_(dZ8BX;#MeDC`X6Gf(mR_o5T?zq;xN@P6|yw?wlISXvY+qpQa~zzAFYw=h~^WI zdOUrOg5}Q*22FbM#T?4Cf5f854&(XyG{s9v*OM~`vFoeSPI}^;tn$A6?l5P|ESin7 z7M4LZzM!vOy$bMYGS1IuE=qcZHDvEK1@!#BH3yk|dR1VM?+mn1DYu@y0&Ei!XltB- z&T%}=W!Opss0v29rKgM8v55^Pq9)K}O)qcrVSUx4`#*2SzQp*knW08hGV>VH>P7th zSkRBEcJ0mh6`5lH^A-I7yKd41Gj|){`guYcN@fAZa#796F2aJ6_VV9u=_19e7-2o= z^V;32;+wvcrdM)v%LU(0xF=fr|1jqG`pbyL559Rs3MtRrX1armi)BBz&|4$e63d2) zP9p6ty?JGUVykJr5V>>*!vRk+sSz=2L-xZj;6N9Sqgmx0Ym944wQDu^ZduEr*vAI! zUltQE>LH-92}{9=K*uDnH1iP=PFRSm67 zKm~c!BEXAwsotmhk8C{7s^iUVK^H^&Q(2@YB$|M}enX^+Q!$LsEo|v?yaubHBVS@M z2_Auj4oVJYg0RKrH@cIaC@SteGWew37IbQ}h&Im*(0Z3PiS?Tgyk73*@U>=oJw7Rb zqHkjVO%>E}TKeAw%|*TKh3?&*LEY6=&6~d@oCf&GJNZh(OZ_>+l@7YvK;96=B{=}o zc(9%rAHO{CP;3~8ol4wvG_udh>^z!yyTBZZD|~0gc{hgFw|v4|I8@kp)Wo~T$O>D( zX%s#GM;r1kDmD3OXJ_B{9mcTUBhL=^8m~!AyMkZnE~l$ae{B&burPx&swqug7D|qL z4Lc`jpnoD%-x=E+Coq=f-*p>MgGs`>#w9N54|mRap@SP*7#qGk>tHhrP&o8J%uX~; z7_+k(HRzl0;r16@vsOmBy;bFCn!FrfhWEr@!mzGw{G>`LSFVYu_(B$*uRmUQuZuO^ z;=J6m_bC75KZQ?%Tp9fhb*?S#d=q_U29YZu`7kTsq)>uchCAbt4_qfE*Vjk7dyFk= z`*du7_eu}L!n{6s@C~LlzA^awCPq7T7BdtV>qqmjTIjLq3g5?bA{CrbuNgF?r!S&U zJ^YhE@J~{Y6Cj*#2=H3N56hMYT1f)|8JT466MwX3RbxnJU1aS04h=}i7B?c!9{WoL zU?_9tJ)`#~)YIaEkbtVU@c2Pbl^N{*4dYv(YHNV#Zy4q0-ni7XQ>^UdR6uPie(6!v z5r=&UW8o>3)yP9l0Y`M6s4fxJl}H(}`JXBh&Nm0U>m74N$frnS_Nd#>hYD;GSUq@C zdnyFNM+A3xizi{~SRy>^hJlM+wi+uS5Mq@mDbLni^8<|xZCjc{X~J1cfdSL~=A(QZ zd;0~(0l`beU+Ri;p1|3;Y;C#3^T$I=B@sR=w!*)eI5p9GZ^@HMw|%=+Iv7?|IFJ#( z@ArVX;FZsvO_f8BcZD~fosAmLtP;nfgIzrmx;>|rtV0!k)C-5YPPF0Vu8d8`uv5Nv zxfS_rcQ26YYu2CFPG{nXUUHG2I5{USpTx0;kPoW=gp7%sooU**XJFzd^cJ)MhCz}h z9X#)?_LV{ItN#i~Qdeca+pzj(VX>W+QFgU>v^+ap#;Ex}(HNHSNZg`XhbPCf@mHME zq|nJw9ZruTV?tx?^IS3s)UpKM?9C9j@aSZKi_SShhd|7`LzVsIrMdw{yB;V5fKJI9 z3%2_p93f;#U+so1tf&yL+Wv6P4O5yfb>!<0J>?obsId z-r8CoxhzmvTU$5Xx2$zc;~F&O6(ix5R~NMOh0uJooZkUoLVn1;vRpl})*dI=?)Cw< z_%CkVh(yAtimn^B)vGV?zvz)&AS`qP7d0vzYZ5;L<>)Qfuexyl-Nj4@CASnjcNv>i z%IGWjTIF(q@6p#$p{z<~)0TJk1F_Q^v}g;buMxtbHCTJhgNBWJN216=7x!A%)DkwM zdDk^ckW4S8BG&}|NL*-oXEgRT z%5*cJ_!`2PB>tKoe})`x=+x5F?ys2+F5)9EsR6B!rs*n6H0aj1wze`Jm3SpSbWTE~ zrIP-^_2?f(1l`YvvE0&wyy3Ewb1u9glc&ZLwTxO&-<*uFFDflM7b^aIHI#}9S9yvV zOSw}wTM|E6_)Pr0*GIR3Uo4`2-Yd2kGp%!wRY2ioy7m*Y=)q1y=!ooY@FZS~eg%UjxIdh3B1lq@A-OfhdWEo1;ekqr7wY>I zq7B`<=|I8HNvc2I}7){Kw@;d2+r;G=fmAamOLCg`Yef<&^3)4 zwdrO4d3?5cyp&pGM<5LrAl?yqv@i1$@k>1$lvRZW`Oy(~2G2xBL<~*k zj~oF-wG)u1P-Vqb9VO6*t?VymVxA!z^Qf}Vlf_DA7&I?@K=!IW^0r8{Xe9by5 z?ScF~+qyYXq_IhYP^wo5{0&cDA2HykgP#cnN2~GePQOy{eI@{ z>*)ss)B*Wctl@rNVpYM;LQh{cNDq5A*LzPpi)R=+$W;f zxtu`T2IW^n*JDru0aA^%OO1y^X`v;k%z1K@1y>pkosUYPf6T+GxWt#n<}_tqzxUJ& z_4OA+bArfvZK_HG$FHJN&7h0(KtUGlrx5syp`DI#Eh$Y!NljJouNrSTw#Fgj29SOo zZSymQ7Ia1IGGx%uJ-uHE1Y|?s2Lluq=3C!s5?RhX!=zv^I4n@<5fJvjZjiE#l*b~gYJaOqSn%k)Gc<7i&AG8O$LQXqN{mvjXoxAxs%O+a(0T6-? zP-lD=k{$AP&28GFhdX#G|HIZ3F31%><=-;t%klz1J~tDj`Y&S|pk?*n_UZ^J5vuX(DTis{ zQN6siay}JU8Lvfq`xB8z6ih|~1Iq^sStX-jiyL%|dA^~IYvN{&K&9(-Pu*@zQ!wju zeCs<7qGEG+8`034&9|`m)BA!4{0FkJMzZ=P5m8)rx?Q*`hTOfs^g7q_Y})rWlX2|5 zUCDX%n?IQr=Hz^|;tR7O51`?AYJadZ2~)e z&%ixS55frvNOAvP+<&xT6Vnu9s@71XW-=Q{>C`Y*A&n7(lld)q1NB-UOT)Vyb;>@N zwTMf}w?hkzlVKO2)e*`2Y?Ph+QAyln12&+*7~*jqAH@XJ$DbvV?6zztg7y!$7rw5! zApM5)d{;$l3^}h7Cm4GAzZZ;!93n%a(nZ!citYfija#w;&qrm;EOaJQq-)}28o)+N z-uU^K6C(SvCd=pn6-O6IB>jvU4sBBbjTXl5H_HAE7^~=_6yq*n0HgUxLK#epd?>YS zl;Z-!f(Mh%ELy*?XGgB4hxf&@4j^00L5!1cF_IyV@^2=4*`-|(CXg)qt zo$Ew)|AbrQ1FOIryNlcszZHQjKrw!6XOIx^)p2J&agYSG?=}-xRCD~M)Au&hN!9Q2ahEYX=noP(G0l(0f-J@%ulS2&+hxXcclFG{LM4^kb)p zMPM4~X^0LQZ(_+CCFSPAxBWM)JkxJ#6^GGLCE%hSq)JIzVJhq-KsQU`U@&tW50V;z zAc^4*&Uh$R6+@bSBGkar zN$(;@ajWIz=7yuE$bNF0Du|;`YAK|ZVHkR_Fc9CkhY8A)ba%@jm9;#@hwMEe1zGw3 znDlGAKxlf>vbIib+Q~;Nj3{PqONT$`#?K^}W%nb|r3b`sAF_I<$1e4qq|Q)Qt%uOD z$@$@mj}DP{z5_X}>X=N~y?_8;=~oJfwJwbtjVH5ETvbnAn>?Q@Z|}OP;E=7FeWAHP zU4rEnmn2M`59mMxdNV9Gy@JS9jrV+dX-hstidJCt^$#rM)8&%GFXcQKBME42;8{dP zqj})pgBu&K=;YEqeq_z~OU(2vieQs1ImuQvrZ)zPXD-Q#_z&sw>tqhl2t;+8AuX4K zdSSiaE&K{}j(N60=g#iwCUkrUHQSzYhc{|Js8^kzK>SBmkct1Co&9fhvkuH^p$yX{ zS0-EdCL_NHBGzkbNSZ^;YYiFO+cwki0vXEQo@eW_F?0=a=lz5A>AfQ4+B0(P+}g9& zUJb$IsZ$-%aW`+2$6Y-jRE4w`ZWu#@3VC@~`h%OPJRix@yL!0@-h0?!G+)XfZ!=uu zavRys$S1+^f;gV|P4*>2GgX9)B)e}6fRgz?j0dQtF~2`u^@)b<(P-46USd--49|Wz z$+S*08>j1%Rr{9#F*{Y$>s<~ykA$r0JZ$`apfQ30Hjju`8|7?LMNS zfy5rI(OquzK^M&T&fd?r_BVKj8UTU^yO;~wCKj4NK}S5@E?a-N!p^0&QjRX`tbBi${0Wr^t9-rA$=;RpAC|`U)zx08?VewV zSDh}WpRM`u-^>InOS16O$ zU*_^b|4`a%UOPRLB(4f3mG|N*P{P-Frrc)a@!#RE=@`dpaDLc$e;CmnEy+mNVdz#^ zp%`zry%5hD50+pg_ArtF~KqsBKTOo%AtW)XxEK94%Po0zmlD(811 zHDi}{&xe1Nu2uMC8wnwDD<-vlH0B+&capplUnNWTQnYn}c5Pw(EoU1JpVHa)(l+vw zyahtvo)(0raQJO?0TX&KJU(vG!r^ipD>Av9Rxre2Ok=~Q*q zi6<6Xa;#$IgF6zv&+U|ah^VIV`t$G9Ov-0B`aTO0Ke3Bq$+vdU92NW;`Dw9-b(4{w zkXC%?^8po-kb%$76H=#TDx(MIElvgQI?J0s{rxebCc?W`_-l`K6-~x%%MZVf*>!p>!YPHT~-%rlVE;v7U^|i-q9U2K!#f z0l+~F&~qkvYFt$_E{(E4ja!#L&n+><`XtH*Oe2sb9u1WGqwJ<+9Hm=gk$53$JXbO; zCOrasIc(IzpxWj36aHap18;M+JQqgk{abTZOQ7iK?rJ*=FTU?`Fao9ZFrPMwiRM;3 z2M}WP_1NC7k;i>}@Zr{~seq}>WOoqFtilDs2?kLkfXQrnZ{#OcsR*~A&RN@ue&mPo z_RH&RE#(wRY5iEGkh**20-oDvV)XPNm*Gy{MJ!Y0!v*q6%}s5)TB{l$T&O9!dGj-v z+88~#3OL_|+pigt|6Y!jUC>UBrTn{PcoQ^nus)b&Y7+-cBN|y+@@^x$Zm4D516mok zGoM$wMhWY4MG7^OY$5T8r7!kB+cJ;L_wWArq<%z~s%H+AcZpURR7c99Df{+K9n?SywU1#!y%uMR z9BJRDl2ouIsXJ&{+2NlEh=RpG)xE=MZru(mHFIG3pmRJ;VZv8FJ-~j&LRRud|LpkG zHSdPIx5pHlEqgTfnrW6}LcYT+2W9K_Md;&JuJjc=Kl-rTz$+|#3dkVZAY-+v1_4@Y z0U1s@Fi0V!AKY}*wP;HPw!_y<4Gw8%rW)=4sCGmjdDYTc3xpV>u~91{lCY_31{XIn zn9`(P95@{+ZvRdL`30~ONE6&c3B&Qa#qmdO1C2ihE2)3`oMO9ghI_U(A*jmy(HOPcmBF?iyJZ$va(DSCy0~h;%QVwbg&WujWp;Re~=NP_uvf z)HN_<A{TdPZK%W0OUms-dTXj1WL`HgRq70Nc^ef!z#IBZ8d)RWK{l`^#jswlJ;rH>Ok)z34a;efeQE ztB3YB_wz?%m#_LwyG|h$0*6YS%m48~TAgtDFK461K1yPx}hRg5=W<#?zQP_yhH^|!a27mlsV z{C%_6nTaWTk|$1h&6iZ}hNElm5X?vaQP$>?>3bvBVMr6kTuD==!z2IBeMT8J)|xzg zGnWtI!J`>0dpV(-#VFv zNXYfOXlAsFbEVCyJYUCNJ-L1&P$g#i?IITyIS8zPvz^c1x4B{_bQD1pk&i%R5c% z5FFT=m-499&4_0X{U7a|c{tSlyT`v{j}!@6n-H=;DlyiI2w5WgPGrfx%U&e=mOU!6 z?`bf$l9-J26eEx9N+xSWA%6GtJikBAALm@x`RknPT*u|QW-&9q^ZkB4_vilH_xt^V z;OI?PE`cn4o?x8oLUB>K+6#LZOEVWgBhO#mVl}n3!tib9o!}k3u5{;ak~NZW$sQZY zkc(ybk!`>DhSzp>{IIMkyQiPG#7CTe^(e290Q-$^zp)BnIYsA1h#8kAnM%5jW8Q!N zbndZO-mQ6gf1y}i<;3Ir^Q-1p`JgQk%3JO|ZmvV_Ehe!0ygEUAr8h?|Ma)T{b5h*I zRkqm7Q|}gZrCbg}t&Vvtb<~_s-cO$qjTmiqFudZGbP5trhIWT^m5TSU7REOWD(l`% zG#g4#=|%2CcMRrp{UO+utqymA^AL z+S(+i-y(V~^FRdHj3xS-!wVt0c#Mz_2uoqY6;5=}dQQl;jb5p<%^cIh@~Ly%3d-}y z+7Ou(c0J9#G8!IJfL5`E&c}cD1i}dxD+_A9ik$B%sShCBk;{U6`(x&AsZP#6>7uFh zwB%5F(hN7`+cI&Hl%nj&&i6*FC=_RUbg1wkAnebMILt);)N z?|Hlv*rN}8iK3eaoD~3^VVLA@7L-~SNlhZ3D?Ec$9}FjZB5ALYy45QX4kj$ z#l;A_(!B0l6R!TNqxJlodtehO9cz&m)RwZ3t!?HDOCFP2qv=A6M)WDce>VKSIBEc; z9z!hY%X>tc;Bm`(Wn%5?yP)G)E=YnZVbk*3^fHD2eWw%`Ct+`xn+}quc2H9EBXPHw zp>B~*;d+SIjC1N6he5x)-+reNKkAehZmUksgde(>W;P_(fNJV`7@O;okvF*=N=fr! z>^o@`&wutg*{aj-;sc#z*{=4Gfiz(&9mH+CH8`NXTq4XK>HP763O1@i4IU!gAdz9@ zBEA_>maa6SQYn&&Q=O>{2}9Ktbt%<24dz;M^?OWz(GX~-E@@1~<&BRqS{ONI;mQ+- zmGSv+$8jFumUq;MFc_8F-(AeU8@ZSwjJ*5B5QoqiGOS?2!@!O7Amq(rBov5-Ck3(o zOEb9Qv8KkI%Ogh1Ib9QRXf-v*%?iU1(E>Ph(zo58f~#_~+Q~|003Vt9D`qjhj3Im3 zS_6*EtoSM_L;I7*jB2@VA;}}%99p;L{=-DQx%+OXvj6I!O6Xpo@t5rMUMO)qJXM6X zz3A^n+cjLdL`*kCP7J3ZeQ8oKBzV7u*ASQX0c1co($e?WZ zuC*Sz{pSz^g-sDFWZLL{w^ZJpx^3@|Pq zc-Z&nv+9gOk7v#6Mu^WzB#B3~z&CBwzb^{d2zg9C1v@s?en+2IQO>20v)Sxap)HiG!7@{NY*M=s7%shksu zNTHyQpkAb5q>^CAMV#aUzl3xnuX&U7`PIfj!aRTKUyax^de_1j2rS46>Z1r*mrk>G z6V*KDf@~yFx(#av?}xI`pCk*$Xc(hzaOkb?QUK;4#RV_GgyhWEM5*!BqPkKp;Y;r>^P1gIqY#7;XmVHx%KU4 zJdYLhfs2_bT4HSV2bQ0C;k78G^AVje&mC`@V}Y@`=b z5s#wvQZ?LIQ|Qruzl8@GRGzHbr@fsik6cCFjyCN=yx*8QK`BZ;Kr`SYv#)D}jXvu3 zaSC)q{`-o|r*?NTvU)!#N6@2p0Y^7iY%%)Rp)wH)^sW?ea3Z*gO_l9SRjCJlTeo8& zje6G>bQR|hOcm;JP6q}GG(beEf_xTq!|7XD`(%7kKvVdiAl{`LpjJWTq?aXOIaG9> zl8m~5UG9}1AIOr_mn^!5@oeJYYGz>M!JJu`MInf{+8e5_|3rb)7Sy;h>jcSDykv*T z{`N>G8AJk%B@!7E1@w%6W2XMW$g%uaR1Esgj;bncakHmyf#pyG%Hom@MJ-KDLp{Bs znHf7WpG|WKSQcla*8`Fa5iKpPvtYx9quiJZ4GIe4#Q2thH$MHH&*DV8`OemgasPdB z7A41j>lc1gFo0e0vDL5g_3PI|0Ds8d8EbMa143y$5{B<1$FYvqN1Xr z_vslJDu>(=BmzxlUR2QX2C9$=23EkqJA30TdK%yYT%|KJGtv7%u`-UX1~^M!LhJc+ zXcjZ9do@rV%F4=wKktF0x5;BtX<yUvO0DIwWt8HtuIPLUi2yFaE!p6b5Tn1PbW5Dda?TVyyeN>JhNMwH;eUU&SkGxS9 zbUCjfe*e#T{9l8)oHImj0hnm0 zM2j89u}U=UVInv;)0OsC!uN4W3g0xy&$fqb5jPgzyOx!}uy_u%Nm()^0R|eGoU!|J zeHbWH(D%{KJLj<(y4wl*1j}1%J*~Un`kQQ?QvfIO0>ISX0v+MM69Srhley&}XfC~j zqMO%h2f3e3#*_h9#$fxw$&)8VgoX9i_B~b(+2@t*OGPLHJ@Vp5dUK+*1BTJ-OA29F z+)pt3t?YoENxR-q#J?Bw-N7}pkDG|pWOXh1|rn-JWGWU@B{fzp|hch-Q z8n@BoQ9kB8b+#)z;kIpo(u8N>3)SuO>1Q5x?wtKK!SYT~&j0!iIypJHI5}oMKEBq6 zKi0YGz9_2jB_t-EI1*PmP2Y{`seV zLQ+!2U~EhbviqGq?(W^YSGy;bvG3+1gKTcZ{sAN`b&D7UDa{<~QF4sjqXkM0|HudaS9C?xO}a=9hMV9A#q@^lTkU zW22T*RzB|7$PpSEn)|(@LrJ#ajhFSTFGi^8IN~P5gTU+Y@D5j_z4JYzT%xMo$gGNtW6o8KGsYQQzPEO8Mh_Mt%Zf>q8&}AqPr5{t2 zCSq)2=FbjxS)X$kGpR#h;9jz~=ilDmUd0O)7FASeVtsy`YaC6WJ${RcP3y0X4d-}M zp~H{n4i_vf3tC@QvCPB718Zz)N>*0v;-Z_FMKhD7r6tLW`8mv&NI9R+ zXnA=q-elTR-9n<*%+S%~-ukd#!AIHI`Qdq>g3*#OL<9RL`>RSn1Enz#oWJ@eCUoie z+kj$nPSO<^iHt-Awp-23&2_nBXTks34F{4+c&{NR7V(~tWgQl`y&c>J=vUd`4PiEM zv)d$+%f{B$S4A^TS6A2Q$(7#e?pWr7G+w~8Qh?n37zc;`R+VWZ4J^pLK$Uw-B*p;K zjukq?BVMGTkd3joXZDk`N~v|CArZ7&E>MW28A^yw6w36mz5YYjRl&K|fT3L|l5YiD?V zEzklIfRjvgUu3UsFRZMvBkzbrK|a3d=;*YZoKqp2i~3vnvR)Su4OwoYD>^2SNws!Ol z3?Ac;+7RP5fb{#~llL^_gDU6GqaZI@1%YB^?_j=M^o=tWc+9zT>_7%11g9-`?uXsJ za3UY$M~|!mW9)HzI}b2t=@7@z$JzoTp0WpVQ)P8<`Wff!<#VG{MnfSt`>4iJibrZvV2u#chEZJiAL7{-Evg2086ESn~?>GhvO3cWkpw#4*C zNKpGspWXX@2UVSdCz_I= zS-+&E#c+sM;VyWp)hq)r1;@C!x~Ha!9F-dj+cX5C_V&U)Lbg|DA_l)VTwS{%#k8$A znevp)_KPCqoTd$c7K-Cd@aM{gY>FXeLElb)+TZ#Hg%7C0!l|2x)yQa=9@2?%&Y#{-mMnTz^I5yJMR z9E}=xEEmkKyQ+Mo2SlQg@VzJ)ki~=f(i@p`Nr6@n^z4D1&k`MiHL~I ztxk6bCue*^5_W!oI$&5aOVav2l<4%KT743>0V#l`)dsCi(d1j_xk>62Q=vD&j4pxt zDg>8|jEp`q;I5ZdEfoY#@!iu*c>{s~`AVIbuqt?R#j?A*n;fJ7#+R0vc@lK5IM@|@ zmBwHymTid!K43rcQZ5WtD!i*LHZmEua|I6b1nfpK^7FY(Tf9pkb>Mj;=$Ea!w|4fk vD*R+@{*aF#-=XQI(105UDY5^n57(9VCrY%MOt?NkZj4-3(^0LtU=#H(3bGxI literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/1-consistent-partition.png b/papers/2017/presentation/images/1-consistent-partition.png new file mode 100644 index 0000000000000000000000000000000000000000..620d2b77ddd5f09110e10009f2bc50a7630fe6a5 GIT binary patch literal 9137 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 LlyWa#yZ65UC=*;9 literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/100-consistency-convergence-weighted.png b/papers/2017/presentation/images/100-consistency-convergence-weighted.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cef03ab574a378de5f7cbe10bf6251841d945b GIT binary patch literal 12190 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 bmkr8k7t~3;l1wz10Hmg*buH(L<-Pv{vj>qH literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/100-consistency-convergence.png b/papers/2017/presentation/images/100-consistency-convergence.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c9e8be7a5dd9f02b5d8f46a64c67856950ed26 GIT binary patch literal 13173 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 Q6pX~qoYGOxR)A> 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%0Aw=Z{L@5$B^6m<{0D|G>*_z-1hP+ub>R< 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 KIQ5XB*M9-OgB+Cr literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/2-3-max-consistent-partitions.png b/papers/2017/presentation/images/2-3-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..02593b0ac14f15abb6f8187b38eb7b99aca3f9bc GIT binary patch literal 23714 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≶>jNQMT}kQn6KCgjfxQ(0c|?uPjq071=8D;@Y}h~n(lRjq+&l)0E)V(< za82L8-vfukeqd9R5;7~G=O`rk5HxoKYW2z(L3AZ9hax)RHVX&eIRkO8wG0gEltWLR z(e{J@BJ*R5cr#8t2oHqCY0zli3Ad^fuzSXfHH19B-PMG-)CkolmBQzN+vnT=$ti`+ zW0<5Ggm(ovKvP{k*<@#w$sTF>$KN~XFI>1#0jlA8n=JiI@U@{fuqR#nERZu`F9$oL zmd@FejXhXjUq5}#KGto%H_5?g?2J9qJO?Q0ao!8%Jis=D86j}&?#%V%yMw6#BENcm z&30B(bMqiSML1~ANm*NSA1O)QSx27K_sL6{#d+N_P37v3B0`hZVs;G5qXsu^mPf2l~>(VI!h?rHQv<^fj+x9&J}wm$=LHy+E`9pef)SHE>H2 z6Yp~!$2X3lfU|ai#!8ow04AH+&P@2mK^Kj_L-l$zNQo0}+;59PGmG88r~7hpa;>=(GA0wrN54`2c^b7|`-HIghu4M3!eNnDIzB3+AjnM(%N7Z5P2BhNlAihzXM%P;{o9^D?HCY1>sG9{~c&ot0=TKu^0Dxj}Ll2GUvLje`6$ZroW z`lW;PrMUm7h4xSDG9(09K zvJ-&UUsTKF`zzh^Re|G<+kODV8^_M%Rv-xd4klb0S1Cf-PomZg*g01YLYHSAVBLFkCyTWyD4PfIo zTt`q_Z*PV#0bhbJ+JCfxCeCN25wwvdgIb$bxlo}Dn{TO#5yjwv6|g#`Cfu}jdP}s5 zMpA6PYhb?XnD}cp&1}Ka+an(o!%kp#XQoCjcpyU$Y{H6lfIBOV!V5vmZ;8u{y6x!K zSKUh^b-DR|>)G9Eek&)k%gg(~D3&^u1zbIU=z@k}@XSkBf4>dLT>ZdsC%k5_vT*h{_F0w#$ISporwat`f}1te#s&JKrcqSvKKDR0t4R}! zU(m7gD2lIlY8d6wK-(dpEVL;DoZZyg>OhZx-e!PDo!XSaZnsAQB*+1g$_T`{cIyG+ z)dSM-q#HLR$gzLQ5B3$HM&5=W5&Gaz1Nw)RBzHH*SnV&6L9hHld8!t+{J{)&wb?v= z-1&{kBnNhK0m-7aB_-jEJ$Tv(6ebS8cK{R~JUmk4I2L@(rZeNdk(7PavV2)H8PwoN z!wl6p0<}r*To}KJva<58PflZ_hQ}aUI#Lb*#vX`K(1KF<-+A0_a*w1UN&AJ^s@4TC P07y|z^>*GZ(`Ww!CvCqO literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/200-consistency-convergence.png b/papers/2017/presentation/images/200-consistency-convergence.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac6a59f788f5551dc7523c213528bb80418994b GIT binary patch literal 12621 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 literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/images/message-broadcasting-state-machine.png b/papers/2017/presentation/images/message-broadcasting-state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..489490ad8a43e347e0fe33c580c42ef264ff48ef GIT binary patch literal 30329 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�{#Y|hvaSTtYjOKdK3I!urfBXZ7#a(jy@x`g~w#%V~gg=eV^|J<<$k!2ne>ovt z^>e5_A639Cv@pLdEGTo)uX#=K)2ZUB_1#3#r?($Va@Y~H?FqDso-GC%_d+wA~}^!i;qhzlSWC@ziyY9w7@iLOK5 zqUzx!0Mt^Ek^EhYt9#_%p&3tZIQu|Oq3NwSm@%D zkpO}`ymXC~^GbH(pr^iEloZPSCJJTmZBWQRdc`7)O;~fCyy>ltYA`ZhvJX zLSQ?MC?g(rEmt~3vM8p3obC{ul+KJ0a2K{9>D~J1g~*A{qC?yOS8LulMiE!ATJaum8&z*a(#J XcjeB{zr{zwp%5wxn(`%b*8~3x6sm&e literal 0 HcmV?d00001 diff --git a/papers/2017/presentation/index.aux b/papers/2017/presentation/index.aux new file mode 100644 index 0000000..b8ce041 --- /dev/null +++ b/papers/2017/presentation/index.aux @@ -0,0 +1,54 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\select@language{english} +\@writefile{toc}{\select@language{english}} +\@writefile{lof}{\select@language{english}} +\@writefile{lot}{\select@language{english}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {2}{2}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{3}{3/3}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {3}{3}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{4}{4/4}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {4}{4}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{5}{5/5}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {5}{5}}} +\@writefile{snm}{\beamer@slide {eq:metric}{6}} +\newlabel{eq:metric}{{2}{6}{}{Doc-Start}{}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{6}{6/6}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {6}{6}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{7}{7/7}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {7}{7}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{8}{8/8}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {8}{8}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{9}{9/9}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {9}{9}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{10}{10/10}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {10}{10}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{11}{11/11}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {11}{11}}} +\@writefile{nav}{\headcommand {\slideentry {0}{0}{12}{12/12}{}{0}}} +\@writefile{nav}{\headcommand {\beamer@framepages {12}{12}}} +\@writefile{nav}{\headcommand {\beamer@partpages {1}{12}}} +\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{12}}} +\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{12}}} +\@writefile{nav}{\headcommand {\beamer@documentpages {12}}} +\@writefile{nav}{\headcommand {\def \inserttotalframenumber {12}}} diff --git a/papers/2017/presentation/index.nav b/papers/2017/presentation/index.nav new file mode 100644 index 0000000..60a7df0 --- /dev/null +++ b/papers/2017/presentation/index.nav @@ -0,0 +1,29 @@ +\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}} +\headcommand {\beamer@framepages {1}{1}} +\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}} +\headcommand {\beamer@framepages {2}{2}} +\headcommand {\slideentry {0}{0}{3}{3/3}{}{0}} +\headcommand {\beamer@framepages {3}{3}} +\headcommand {\slideentry {0}{0}{4}{4/4}{}{0}} +\headcommand {\beamer@framepages {4}{4}} +\headcommand {\slideentry {0}{0}{5}{5/5}{}{0}} +\headcommand {\beamer@framepages {5}{5}} +\headcommand {\slideentry {0}{0}{6}{6/6}{}{0}} +\headcommand {\beamer@framepages {6}{6}} +\headcommand {\slideentry {0}{0}{7}{7/7}{}{0}} +\headcommand {\beamer@framepages {7}{7}} +\headcommand {\slideentry {0}{0}{8}{8/8}{}{0}} +\headcommand {\beamer@framepages {8}{8}} +\headcommand {\slideentry {0}{0}{9}{9/9}{}{0}} +\headcommand {\beamer@framepages {9}{9}} +\headcommand {\slideentry {0}{0}{10}{10/10}{}{0}} +\headcommand {\beamer@framepages {10}{10}} +\headcommand {\slideentry {0}{0}{11}{11/11}{}{0}} +\headcommand {\beamer@framepages {11}{11}} +\headcommand {\slideentry {0}{0}{12}{12/12}{}{0}} +\headcommand {\beamer@framepages {12}{12}} +\headcommand {\beamer@partpages {1}{12}} +\headcommand {\beamer@subsectionpages {1}{12}} +\headcommand {\beamer@sectionpages {1}{12}} +\headcommand {\beamer@documentpages {12}} +\headcommand {\def \inserttotalframenumber {12}} diff --git a/papers/2017/presentation/index.out b/papers/2017/presentation/index.out new file mode 100644 index 0000000..e69de29 diff --git a/papers/2017/presentation/index.snm b/papers/2017/presentation/index.snm new file mode 100644 index 0000000..d97a3bc --- /dev/null +++ b/papers/2017/presentation/index.snm @@ -0,0 +1 @@ +\beamer@slide {eq:metric}{6} diff --git a/papers/2017/presentation/index.tex b/papers/2017/presentation/index.tex new file mode 100644 index 0000000..fc94f2a --- /dev/null +++ b/papers/2017/presentation/index.tex @@ -0,0 +1,196 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[english]{babel} +\definecolor{beamer@blendedblue}{rgb}{0.9, 0.8,0.3} +\setbeamertemplate{footline}{\insertframenumber/\inserttotalframenumber} +\usepackage{graphicx} +\usepackage{subcaption} +\captionsetup{compatibility=false} +\usetheme{Hannover} +\usepackage{amssymb} +\usepackage{amsmath} +\usepackage{enumerate} +\usepackage{stmaryrd} +\usepackage[ruled,linesnumbered]{algorithm2e} + +\begin{document} +\title{Consistency Metric for Distributed Datastores} +\author{Kyrylo Rukkas, Galyna Zholtkevych} +\institute{V.N. Karazin Kharkiv National University, Ukraine} +\date{{\bfseries International Conference Taapsd -- 2017}\\ + Kyiv, 4 -- 8 Dec 2017} +% +\frame{\titlepage} +\begin{frame}{Agenda} +\begin{itemize} +\item Motivation: + +\begin{itemize} +\item need to make consistent datastores +\item consistency problem of a distributed datastorage +\item need to present consistency state as stochastic value. +\end{itemize} + +\item Background: + +\begin{itemize} +\item eventual consistency definition; +\item consistency model expanded with new definitions; +\end{itemize} + +\item Formula to define inconsistency state. Example +\item Graphics for inconsistency stochastic value +\item Consistency convergence proposition. Proof +\item Graphics for consistency convergence value +\item Conclusions and future work + +\end{itemize} +\end{frame} + + +\begin{frame}{Motivation} +\begin{itemize} +\item Consistency is not a new problem in datastores, especially if they are huge +\item At this point in large DS it become more usable to present consistency state as stoschastic value. + +\end{itemize} +\end{frame} + +\begin{frame}{Background} +\begin{block}{ACID vs BASE strategy} +\begin{itemize} +\item ACID (Atomic, Consistent, Isolated, Durable) mean that once a transaction is complete, its data is consistent and stable on disk +\item BASE (Basic Availability, Soft-State, Eventual Consistency) values availability, but +does not offer guaranteed consistency of replicated data at write time +\end{itemize} + +\end{block} + +\begin{block}{Eventual consistency definition} +Consistency is called eventual if no updates +take place for a long time and all replicas will gradually become consistent +\end{block} + +\end{frame} + +\begin{frame}{Evolved model for consistency} +Our model is a tuple $(N, L, \partial,D, r)$, where \\ + +$N$ -- a finite set of nodes; \\ +$L$ -- a finite set of links; \\ +$\partial:L\rightarrow 2^N$ -- a mapping that associates each link with two nodes;\\ +$D$ -- a finite set of stored data units;\\ +$r:D\rightarrow 2^N$ -- a mapping that associates each data unit $d$ with a subset of nodes +that store its replica. +$N_d$ -- a finite set of nodes that are having given dataunit $d$; \\ +$l(N_d)$ -- a number of nodes in datastore that are having given dataunit; \\ +$n_c$ -- a number of nodes in a subset of $N_d$ where all nodes have the same replica. + +\end{frame} + +\begin{frame}{Formula and example} +\begin{block}{Consistency formula derivation} +\begin{equation} + p_c = \frac{n_c}{l(N_d)} \cdot \frac{n_c - 1}{l(N_d) - 1} +\end{equation} +\begin{equation}\label{eq:metric} + I(d)=1-\sum_{k=1}^K\dfrac{N_k(N_k-1)}{N(N-1)}. +\end{equation} + +\end{block} +\begin{block}{Example} + +\begin{tabular}{lclcl} + $I(5)=0$ \\ $I(4+1)=\frac{2}{5}$ & & $I(3+2)=\frac{3}{5}$\\ + $I(3+1+1)=\frac{7}{10}$ && $I(2+2+1)=\frac{4}{5}$ \\ + $I(2+1+1+1)=\frac{9}{10}$\\ + $I(1+1+1+1+1)=1$ +\end{tabular} + +\end{block} +\end{frame} + +\begin{frame}{Demonstration of experiments} +\begin{figure} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/2-3-consistent-partitions-probability.png}\hfill +\end{subfigure} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/1-4-consistent-partitions-probability.png} +\end{subfigure} +\caption{The datastore has two consistent partitions} +\end{figure} + +\begin{figure}[p] +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/1-1-3-consistent-partitions-probability.png} +\end{subfigure} +\begin{subfigure}{0.3\linewidth} +\centering\includegraphics[width=\linewidth]{images/1-2-2-consistent-partitions-probability.png} +\end{subfigure} +\caption{The datastore has three consistent partitions} +\end{figure} + +\end{frame} + + +\begin{frame}{Proposition about consistency convergence} +Let we have a distributed datastore where all links are available and reliable (network partitions do not happen in a datastore and nodes are stable and respond in approximately equal time); the interval between writing operations is $t_w$. +Then $t_w$ is less than the diameter of network graph ensures eventual consistency of the datastore. +\begin{block}{Brief proof} +\begin{enumerate} +\item $n_1$, $n_2$ are outermost each from other +\item Time slots $t$ taken from $n_1$ to $n_2$ is the shortest path from $n_1$ to $n_2$ +\item From definition of the diameter $T_c = diameter(G)$ +\end{enumerate} +\end{block} +\end{frame} + +\begin{frame}{Demonstration of experiments} +\begin{figure}[p] +\begin{subfigure}{0.4\linewidth} +\centering\includegraphics[width=\linewidth]{images/100-consistency-convergence-weighted.png} +\end{subfigure} +\begin{subfigure}{0.4\linewidth} +\centering\includegraphics[width=\linewidth]{images/200-consistency-convergence-weighted.png} +\end{subfigure} +\begin{subfigure}{0.4\linewidth} +\centering\includegraphics[width=\linewidth]{images/1000-consistency-convergence-weighted.png} +\end{subfigure} +\caption{Graphics for consistency convergence time on weighted graph} +\end{figure} + +\end{frame} + +\begin{frame}{Activity diagram of simulation process} + +\begin{figure} +\centering\includegraphics[width=\linewidth]{images/message-broadcasting-state-machine.png} +\end{figure} + +\end{frame} + +\begin{frame}{Conclusions} + +\begin{itemize} +\item the sufficient condition for distributed datastore can be choosing network topology where frequency of write operations will be no greater than diameter of the graph; +\item if frequency of write operations is grater than diameter of the graph, it may be useful to evaluate current inconsistency state of the graph; +\item if inconsistency state is close to 0 enough for current requirements, it means that there are inconsistent nodes that are far enough to not conflict with new replicas. The next source can be chosen from consistent list and far enough for inconsistent ones; +\item if still more strict consistency needs to be satisfied and inconsitency state is close enough to 0, the node closest to the source node where previous write operation occurred can be chosen for writing; +\item if replica's history is not important for requirements, it may be possible to solve the problem fixing conflicts. +\end{itemize} + +\end{frame} + +\begin{frame}{Future work} +\begin{itemize} +\item complicate a datastore introducing different availability for each node; +\item complicate a datastore introducing various network partitions for a datastore; +\item provide an algorithm that will allow to make a decision what is the best approach for a given datastore such that the eventually consistency is satisfied or an approach when inconsistency will not impact on datastore requirements; +\item theory for finding the most actual replica and time complexity for this algorithm +\item consider all the proposed above metrics in various kinds of real topologies. +\end{itemize} + +\end{frame} + + +\end{document} \ No newline at end of file diff --git a/papers/2017/presentation/index.toc b/papers/2017/presentation/index.toc new file mode 100644 index 0000000..556f38b --- /dev/null +++ b/papers/2017/presentation/index.toc @@ -0,0 +1 @@ +\select@language {english} diff --git a/papers/2018/index.aux b/papers/2018/index.aux new file mode 100644 index 0000000..f23e546 --- /dev/null +++ b/papers/2018/index.aux @@ -0,0 +1 @@ +\relax diff --git a/papers/2018/index.tex b/papers/2018/index.tex new file mode 100644 index 0000000..e365e3a --- /dev/null +++ b/papers/2018/index.tex @@ -0,0 +1,58 @@ +%\emph{\emph{•}} +% * 2017-11-19T14:02:18.924Z: +% +% ^. +\documentclass{llncs} +% +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{graphicx} +\usepackage{subcaption} +\captionsetup{compatibility=false} +\usepackage{url} +\usepackage[usenames]{color} + +\usepackage{lipsum} % stab + +\begin{document} +Let there are several paths from $i$ to $j$. Let them denote as +$P = {P_1, P_2, .., P_k, ..., P_n}$. + +The message will be broadcasted, but the time it takes from $i$ to $j$ +will be unique, because only one message will reach the destination first +even if interval between messages are milliseconds or less due to processing rules. +Let the probability of choosing result fastest path be $p_k$ +That means that $\sum_{k=1}^{n} p_k = 1 $. +Delay == time taken for a signal to traverse a network from point A to point B. + +But let's consider $p_k$ in detail. +$p_k$ is the probability of that this path will be the fastest who transport message +to destination. + +But what it means - the shortest path? The shortest path is minimum of all sums for each link +cost of all paths. But how do we count link cost? +Each network (provider, actually) has own metric that identifies as the result "link cost". +(in non oriented graph, but we consider message going in one direction to reach destination and negotiate messages going in opposite one). +So that each link has own metric that identifies how much it costs to go through this (more expensive, cheaper, longer, faster, etc. ). In this metric many parameters are included. +(see \url{https://en.wikipedia.org/wiki/Metrics_(networking)} ). + +So depending on size of message, period of incoming, path reliability, bandwidth , mtu, throughput, delay, this metric is calculated. Here even fault tolerance for the link and nodes are included, so it has impacts on availability and partition tolerance of full network. That means that having a metric, we can negotiate other considerations about partition tolerance and availability. +The only thing is that each network provider has own metric calculation, own formula for that. + +Let's remember this. Let's also remember that administrator of network (local network) knows the metric of each link. This means if datastore is limited to this network, the shortest path is known. Note, that link cost is calculated dynamically depending on the network settings and dynamic changing of devices. + +Let this network be in London. +Amazon Web Services has good infrastructure, that is separated by regions and availability zones. Region can be european west 1 or usa west 2 etc. Each region has about three availibility zones (or more). +If the datastore has similar infrastructure and gateways between each other that are synced periodically (due to changing of time belts moment syncing is not needed, but syncing on demand is left along with syncs twice per day, or once per two hours or more often, for example). + +So let's consider separate network since we don't sync between regions and do not need instant global consistency. We want full consistency in just one network where we know the metric for each link. + +Again, having this metric we may not consider partition tolerance and availability for the datastore since these values may be included in metric of network provider (depending on provider). We have a graph with known weights and shortest path will be indeed the shortest considering latency, availability of path, data loss etc. Along with this metric another metric can be implemented to the chosen shortest path. These both metrics will be dynamic. +In time the metric of time through the shortest path will have statistical values to calculate average and this will give the average coming through the diameter of the graph. +This will mean the maximum period between messages incoming to such datastore. + +Now let's consider multiple messages to the datastore. As we already know shortest path in given network does not depend on number of messages, it only identifies the limit of messages +in size of bits. + +\end{document} \ No newline at end of file diff --git a/papers/2018/llncs.cls b/papers/2018/llncs.cls new file mode 100644 index 0000000..93c802e --- /dev/null +++ b/papers/2018/llncs.cls @@ -0,0 +1,1207 @@ +% LLNCS DOCUMENT CLASS -- version 2.17 (12-Jul-2010) +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science +% +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2010/07/12 v2.17 +^^J LaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openright\iftrue +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +% languages +\let\switcht@@therlang\relax +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index +\RequirePackage{aliascnt} + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} +\renewcommand\@pnumwidth{2em} +\renewcommand\@tocrmarg{3.5em} +% +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +% +\def\switcht@albion{% +\def\abstractname{Abstract.} +\def\ackname{Acknowledgement.} +\def\andname{and} +\def\lastandname{\unskip, and} +\def\appendixname{Appendix} +\def\chaptername{Chapter} +\def\claimname{Claim} +\def\conjecturename{Conjecture} +\def\contentsname{Table of Contents} +\def\corollaryname{Corollary} +\def\definitionname{Definition} +\def\examplename{Example} +\def\exercisename{Exercise} +\def\figurename{Fig.} +\def\keywordname{{\bf Keywords:}} +\def\indexname{Index} +\def\lemmaname{Lemma} +\def\contriblistname{List of Contributors} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\mailname{{\it Correspondence to\/}:} +\def\noteaddname{Note added in proof} +\def\notename{Note} +\def\partname{Part} +\def\problemname{Problem} +\def\proofname{Proof} +\def\propertyname{Property} +\def\propositionname{Proposition} +\def\questionname{Question} +\def\remarkname{Remark} +\def\seename{see} +\def\solutionname{Solution} +\def\subclassname{{\it Subject Classifications\/}:} +\def\tablename{Table} +\def\theoremname{Theorem}} +\switcht@albion +% Names of theorem like environments are already defined +% but must be translated if another language is chosen +% +% French section +\def\switcht@francais{%\typeout{On parle francais.}% + \def\abstractname{R\'esum\'e.}% + \def\ackname{Remerciements.}% + \def\andname{et}% + \def\lastandname{ et}% + \def\appendixname{Appendice} + \def\chaptername{Chapitre}% + \def\claimname{Pr\'etention}% + \def\conjecturename{Hypoth\`ese}% + \def\contentsname{Table des mati\`eres}% + \def\corollaryname{Corollaire}% + \def\definitionname{D\'efinition}% + \def\examplename{Exemple}% + \def\exercisename{Exercice}% + \def\figurename{Fig.}% + \def\keywordname{{\bf Mots-cl\'e:}} + \def\indexname{Index} + \def\lemmaname{Lemme}% + \def\contriblistname{Liste des contributeurs} + \def\listfigurename{Liste des figures}% + \def\listtablename{Liste des tables}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% + \def\notename{Remarque}% + \def\partname{Partie}% + \def\problemname{Probl\`eme}% + \def\proofname{Preuve}% + \def\propertyname{Caract\'eristique}% +%\def\propositionname{Proposition}% + \def\questionname{Question}% + \def\remarkname{Remarque}% + \def\seename{voir} + \def\solutionname{Solution}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tableau}% + \def\theoremname{Th\'eor\`eme}% +} +% +% German section +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% + \def\abstractname{Zusammenfassung.}% + \def\ackname{Danksagung.}% + \def\andname{und}% + \def\lastandname{ und}% + \def\appendixname{Anhang}% + \def\chaptername{Kapitel}% + \def\claimname{Behauptung}% + \def\conjecturename{Hypothese}% + \def\contentsname{Inhaltsverzeichnis}% + \def\corollaryname{Korollar}% +%\def\definitionname{Definition}% + \def\examplename{Beispiel}% + \def\exercisename{\"Ubung}% + \def\figurename{Abb.}% + \def\keywordname{{\bf Schl\"usselw\"orter:}} + \def\indexname{Index} +%\def\lemmaname{Lemma}% + \def\contriblistname{Mitarbeiter} + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Nachtrag}% + \def\notename{Anmerkung}% + \def\partname{Teil}% +%\def\problemname{Problem}% + \def\proofname{Beweis}% + \def\propertyname{Eigenschaft}% +%\def\propositionname{Proposition}% + \def\questionname{Frage}% + \def\remarkname{Anmerkung}% + \def\seename{siehe} + \def\solutionname{L\"osung}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tabelle}% +%\def\theoremname{Theorem}% +} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\renewcommand\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {\@arabic\c@chapter} + +\newif\if@mainmatter \@mainmattertrue +\newcommand\frontmatter{\cleardoublepage + \@mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + \@mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {12\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {8\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-12\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I\!R}} %reelle Zahlen +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts\, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus2\p@ \@minus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + \@starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def\@dotsep{2} + +\let\phantomsection=\relax + +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else +{}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% + +\def\@adcmk[#1]{\ifcase #1 \or +\def\@gtempa{\addnumcontentsmark}% + \or \def\@gtempa{\addcontentsmark}% + \or \def\@gtempa{\addcontentsmarkwop}% + \fi\@gtempa{toc}{chapter}% +} +\def\addtocmark{% +\phantomsection +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% +} + +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}% + \fi\par + \penalty\@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-\@highpenalty} + \addvspace{8pt plus 1pt} + \@tempdima \z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty \endgroup} + +\def\l@author#1#2{\addpenalty{\@highpenalty} + \@tempdima=15\p@ %\z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip + \textit{#1}\par + \penalty\@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} + \@starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} + \@starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\listfigurename}{\listfigurename}}% + \@starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + \@mkboth{\listtablename}{\listtablename}}% + \@starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def\@biblabel##1{##1.} + \small + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries + ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else + \@citea\def\@citea{,\,\hskip\z@skip}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else + \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +\@cons\@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def\@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {\@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\par + \def\,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def\@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} + +\long\def\@makecaption#1#2{% + \small + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def \@floatboxreset {% + \reset@font + \small + \@setnobreak + \@setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@dblfloat{table}} + {\end@dblfloat} + +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef\@author{No Author Given}% + \gdef\@title{No Title Given}% + \gdef\@subtitle{}% + \gdef\@institute{No Institute Given}% + \gdef\@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef\@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}\@institute}% + \ifnum\c@@inst=1\relax + \gdef\fnnstart{0}% + \else + \xdef\fnnstart{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + \@institute\par + \endgroup} + +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% +\@ifpackageloaded{babel}{% +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% +}{\switcht@@therlang}% +\providecommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1}% +} +\def\homedir{\~{ }} + +\def\subtitle#1{\gdef\@subtitle{#1}} +\clearheadinfo +% +%%% to avoid hyperref warnings +\providecommand*{\toclevel@author}{999} +%%% to make title-entry parent of section-entries +\providecommand*{\toclevel@title}{0} +% +\renewcommand\maketitle{\newpage +\phantomsection + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks +% + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef\@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef\@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{\@author}}% + \else + \def\\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% + \addcontentsline{toc}{author}{\toc@uthor}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef\@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef\@author{\copy\authrun}% + \markboth{\@author}{\@title}% + \fi + \endgroup + \setcounter{footnote}{\fnnstart}% + \clearheadinfo} +% +\def\@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + \let\newline\\ + {\Large \bfseries\boldmath + \pretolerance=10000 + \@title \par}\vskip .8cm +\if!\@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + \@subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}\@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +\@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@thmcountersep{} +\def\@thmcounterend{.} + +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} + +% definition of \spnewtheorem with number + +\def\@spnthm#1#2{% + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} + +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spothm#1[#2]#3#4#5{% + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\newaliascnt{#1}{#2}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}}} + +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\refstepcounter{#1}% +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} + +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def\@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} + +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def\@sthm#1#2{\@Ynthm{#1}{#2}} + +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} + +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def\@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1\@thmcounterend}]} + +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} + +\if@envcntsect + \def\@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + \@addtoreset{theorem}{section} + \else + \@addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def\@takefromreset#1#2{% + \def\@tempa{#1}% + \let\@tempd\@elt + \def\@elt##1{% + \def\@tempb{##1}% + \ifx\@tempa\@tempb\else + \@addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + \@tempc + \let\@elt\@tempd} + +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput +%end of file llncs.cls diff --git a/papers/index.aux b/papers/index.aux index 893e2bd..6dae3aa 100644 --- a/papers/index.aux +++ b/papers/index.aux @@ -21,6 +21,7 @@ \newlabel{sec:experiments}{{4}{5}} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The datastore is fully consistent and fully inconsistent\relax }}{6}} \providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +<<<<<<< Updated upstream \newlabel{pic:fully}{{1}{6}} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The datastore has two consistent partitions\relax }}{6}} \newlabel{pic:two_parts}{{2}{6}} @@ -52,6 +53,14 @@ \@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces State machine of simulation of message broadcasting through a datastore\relax }}{9}} \newlabel{pic:state-machine}{{8}{9}} \@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{9}} +======= +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 276}}{6}} +\citation{bib:github_dds} +\@writefile{toc}{\contentsline {section}{\numberline {5}Simulation Model to Assess Inconsistency Ratio of Data}{7}} +\newlabel{sec:simulation}{{5}{7}} +\newlabel{pic:diagram}{{\caption@xref {pic:diagram}{ on input line 294}}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{7}} +>>>>>>> Stashed changes \citation{bib:c_ts} \bibcite{bib:brewer}{1} \bibcite{bib:prob_approach}{2} @@ -60,3 +69,4 @@ \bibcite{bib:andrews}{5} \bibcite{bib:github_dds}{6} \bibcite{bib:c_ts}{7} +\@writefile{toc}{\contentsline {section}{\numberline {7}Future work}{8}} diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/abstract-database-arch.jpg" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/abstract-database-arch.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..af185658043fc0f4afb882d35743528a7700da72 GIT binary patch literal 16475 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 literal 0 HcmV?d00001 diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/application-delivery-load-balancing-diagram-simple-1.png" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/application-delivery-load-balancing-diagram-simple-1.png" new file mode 100644 index 0000000000000000000000000000000000000000..c78f43a3173badfddc2e91ff9ca440df0c85dc1c GIT binary patch literal 20220 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 Jvd$@?2>{f8N;?1m literal 0 HcmV?d00001 diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/new.uxf" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/new.uxf" new file mode 100644 index 0000000..ab1f882 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/images/new.uxf" @@ -0,0 +1,105 @@ + + + 10 + + UMLState + + 580 + 280 + 100 + 40 + + Proxy Level + + + + UMLState + + 760 + 400 + 180 + 40 + + Database Instance + + + + Relation + + 450 + 310 + 200 + 110 + + lt=<- + 10.0;90.0;180.0;10.0 + + + Relation + + 620 + 310 + 30 + 110 + + lt=<- + 10.0;90.0;10.0;10.0 + + + Relation + + 620 + 310 + 220 + 110 + + lt=<- +forwarded request + 200.0;90.0;10.0;10.0 + + + Relation + + 620 + 210 + 120 + 90 + + lt=<- +initial request + 10.0;70.0;10.0;10.0 + + + UMLState + + 540 + 400 + 180 + 40 + + Database Instance + + + + UMLState + + 340 + 400 + 180 + 40 + + Database Instance + + + + UMLState + + 580 + 180 + 100 + 40 + + client + + + diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.aux" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.aux" new file mode 100644 index 0000000..c2966c3 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.aux" @@ -0,0 +1,48 @@ +\relax +\providecommand \oddpage@label [2]{} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Hypothesis: Distributed Datastore: Handle request consistent}{4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\citation{bib:brewer} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Load balancer handling solution and its estimates}{5}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Hybrid algorithm}{7}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Own load balancing algorithm estimates}{8}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Distributed hash table}{9}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Imitation model to communicate at load balancer level}{10}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Mathematical Model of ... }{11}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}Estimates, time complexity of algorithm basing on lb balancer, distributed hash table}{12}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\bibcite{bib:prob_approach}{{1}{}{{}}{{}}} +\bibcite{bib:lb}{{2}{}{{}}{{}}} +\bibcite{bib:lb_mechanisms}{{3}{}{{}}{{}}} +\providecommand\NAT@force@numbers{}\NAT@force@numbers +\@writefile{toc}{\contentsline {chapter}{\numberline {9}Appendix: Load balancer, distributed hash table complexity estimates}{13}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {likechapter}{\MakeUppercase {Biblography}}{13}} +\newlabel{LastPage}{{}{13}} +\xdef\lastpage@lastpage{13} +\gdef\lastpage@lastpageHy{} +\gdef\totfig{0}\gdef\tottab{0}\gdef\totref{3} diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.tex" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.tex" new file mode 100644 index 0000000..f8667c3 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.tex" @@ -0,0 +1,342 @@ +%\emph{\emph{•}} +% * 2017-11-19T14:02:18.924Z: +% +% ^. + +%\emph{\emph{•}} +% * 2017-11-19T14:02:18.924Z: +% +% ^. +\documentclass{report} +% +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{graphicx} +\usepackage{subcaption} +\captionsetup{compatibility=false} +\usepackage{url} +\usepackage[usenames]{color} + +\usepackage{lipsum} % stab +%\linespread{1.3} % полуторный интервал +\renewcommand{\rmdefault}{ftm} % Times New Roman +\frenchspacing +\usepackage{fancyhdr} +\pagestyle{fancy} +\fancyhf{} +%\fancyhead[R]{\thepage} +%\fancyheadoffset{0mm} +%\fancyfootoffset{0mm} +%\setlength{\headheight}{17pt} +%\renewcommand{\headrulewidth}{0pt} +%\renewcommand{\footrulewidth}{0pt} +\fancypagestyle{plain}{ + \fancyhf{} + \rhead{\thepage}} +\setcounter{page}{2} % начать нумерацию страниц с №2 +% +\usepackage[tableposition=top]{caption} +\usepackage{subcaption} +\DeclareCaptionLabelFormat{gostfigure}{Figure 2} +\DeclareCaptionLabelFormat{gosttable}{Table 2} +\DeclareCaptionLabelSeparator{gost}{~---~} +\captionsetup{labelsep=gost} +\captionsetup[figure]{labelformat=gostfigure} +\captionsetup[table]{labelformat=gosttable} +\renewcommand{\thesubfigure}{\asbuk{subfigure}} +% +\usepackage{amssymb} +\usepackage{stmaryrd} +\usepackage[ruled,linesnumbered]{algorithm2e} +\usepackage{multirow} +%\usepackage{titlesec} +% +%\titleformat{\chapter}[display] +% {\filcenter} +% {\MakeUppercase{\chaptertitlename} \thechapter} +% {14pt} +% {\bfseries}{} +% +%\titleformat{\section} +% {\normalsize\bfseries} +% {\thesection} +% {1em}{} +% +%\titleformat{\subsection} +% {\normalsize\bfseries} +% {\thesubsection} +% {1em}{} +% +% Настройка вертикальных и горизонтальных отступов +%\titlespacing*{\chapter}{0pt}{-30pt}{8pt} +%\titlespacing*{\section}{\parindent}{*4}{*4} +%\titlespacing*{\subsection}{\parindent}{*4}{*4} + +\usepackage{geometry} +%\geometry{left=3cm} +%\geometry{right=1.5cm} +%\geometry{top=2.4cm} +%\geometry{bottom=2.4cm} +% +\usepackage{enumitem} +\makeatletter + \AddEnumerateCounter{\asbuk}{\@asbuk}{м)} +\makeatother +\setlist{nolistsep} +\renewcommand{\labelitemi}{-} +\renewcommand{\labelenumi}{\asbuk{enumi})} +\renewcommand{\labelenumii}{\arabic{enumii})} +% +%БЛОК ДЛЯ ОГЛАВЛЕНИЯ +\usepackage{tocloft} +%\renewcommand{\cfttoctitlefont}{\hspace{0.38\textwidth} \bfseries\MakeUppercase} +%\renewcommand{\cftbeforetoctitleskip}{-1em} +\renewcommand{\cftaftertoctitle}{\mbox{}\hfill \\ \mbox{}\hfill{\footnotesize Page.}\vspace{-2.5em}} +\renewcommand{\cftchapfont}{\normalsize\bfseries \MakeUppercase{\chaptername} } +\renewcommand{\cftsecfont}{\hspace{31pt}} +\renewcommand{\cftsubsecfont}{\hspace{11pt}} +\renewcommand{\cftbeforechapskip}{1em} +\renewcommand{\cftparskip}{-1mm} +\renewcommand{\cftdotsep}{1} +\setcounter{tocdepth}{2} % задать глубину оглавления — до subsection включительно +% +%для специальных разделов (аннотаций, вступлений списка сокращений, выводов, списка литературы) +\newcommand{\empline}{\mbox{}\newline} +\newcommand{\likechapterheading}[1]{ + \begin{center} + \textbf{\MakeUppercase{#1}} + \end{center} + \empline} +% + +\makeatletter + \renewcommand{\@dotsep}{2} + \newcommand{\l@likechapter}[2]{{\bfseries\@dottedtocline{0}{0pt}{0pt}{#1}{#2}}} +\makeatother +\newcommand{\likechapter}[1]{ + \likechapterheading{#1} + \addcontentsline{toc}{likechapter}{\MakeUppercase{#1}}} +% +\usepackage[square,numbers,sort&compress]{natbib} +\renewcommand{\bibnumfmt}[1]{#1.\hfill} % нумерация источников в самом списке — через точку +\renewcommand{\bibsection}{\likechapter{Biblography}} % заголовок специального раздела +\setlength{\bibsep}{0pt} +% +%для подсчетов глав и т.д. +\usepackage{lastpage} +% ... +%Дипломная работа: \pageref*{LastPage}~с., ... +\newcounter{totfigures} +\newcounter{tottables} +\makeatletter + \AtEndDocument{% + \addtocounter{totfigures}{\value{figure}}% + \addtocounter{tottables}{\value{table}}% + \immediate\write\@mainaux{% + \string\gdef\string\totfig{\number\value{totfigures}}% + \string\gdef\string\tottab{\number\value{tottables}}% + \string\gdef\string\totref{\number\value{totreferences}}% + }% + } +\makeatother +% ... +%Дипломная работа: \pageref*{LastPage}~с., \totfig~рис., \tottab~табл... +% +%для автоматизации увеличений счетчика +\usepackage{etoolbox} +\pretocmd{\chapter}{\addtocounter{totfigures}{\value{figure}}}{}{} +\pretocmd{\chapter}{\addtocounter{tottables}{\value{table}}}{}{} +% +\newcounter{totreferences} +\pretocmd{\bibitem}{\addtocounter{totreferences}{1}}{}{} +% +%для встраивания приложений +\usepackage[title,titletoc]{appendix} + +%\titleformat{\paragraph}[display] +% {\filcenter} +% {\MakeUppercase{\chaptertitlename} \thechapter} +% {8pt} +% {\bfseries}{} +%\titlespacing*{\paragraph}{0pt}{-30pt}{8pt} + +\newcommand{\append}[1]{ + \clearpage + \stepcounter{chapter} + \paragraph{\MakeUppercase{#1}} + \empline + \addcontentsline{toc}{likechapter}{\MakeUppercase{\chaptertitlename~\Asbuk{chapter}\;#1}}} + +\sloppy +\begin{document} +\tableofcontents + +\chapter*{Introduction} +Nowadays innovations are growing fast and existing technologies are evolving. Hyperloop, exploring the universe, science research work, green systems and more daily, but so needed things, such as transport, +smart homes, communication technologies... +The fact, that they require more power, space, flexibility, reliability and speed, should not be overlooked. +One of important component for lots of kinds of such innovations is fast and reliable storage. +In 21th century the term "distributed datastore" became habitual for usage. And some distributed datastores +are growing, some do not. Why? There is a reason that have a great impact on fast growth of such a datastore, +when they lose consistency value as soon as they become larger. For some of systems it is very important +part of their stable work. + +There is a well-know theorem, called CAP, that claims that it is impossible to satisfy fully consistency, avaliability and partition tolerance value simultaneously. + +We do not argue this theorem, but what we do - try to get round this problem. +We explain the idea in detail in the first chapter. + +\chapter{Hypothesis: request handler for datastore to balance consistency} + +It is well-known fact that according CAP-theorem it is impossible to support strong consistency and not to lose availability. In this chapter we make attempt to reach compromise and ensure or increase consistency value for any distributed datastore without losing availability and partition tolerance. +We would like to introduce the idea first and then estimate its impact availability and partition tolerance. + +So let us go deeper into a problem. + +Imagine we have a distributed datastore that has N nodes. We do not take into account for now role of each node +(master or slave) and assume that each node can accept read and write requests. Now we focus on the mechanism +of database request accepting and processing. If one of nodes accepted write request, we claim that the +datastore system will reach fast enough of consistency value to maintain consistent response. + +What if to try to get round this problem by handling request to database by the list of consistent nodes for. appropriate to the dataunit incoming in the request. +We want to estimate how it may impact availability and partition tolerance if we want to +get round consistency issue this way. + +There are several solutions. But they all have general architecture: +(Picture of architecture) + +\centering\includegraphics[scale=0.4]{images/abstract-database-arch.jpg}\hfill +This architecture may have several implementations: +\begin{itemize} +\item load balancer level - load balancer may include or implement this solution +\item hybrid: application level - it may be done as an own separate algorithm working on the top of request handling. +\item manual redirection between nodes at the database level +\end{itemize} + +Добавить общие понятия, load balancer, distributed hash table + +We want to compare the architecture value of all of these solutions and propose the best one. +In the next section we consider load balancer level solution, in the section 2 - hybrid and in the section 3 - manual redirection at database level. + +\chapter{Load balancer handling solution and its estimates} + +Firstly let us remind what load balancer is. +From \cite{bib:brewer} load balancing is the technique that distributes the workload across multiple devices. +Generally it stands behind several web servers. It is most relevant to describe load balancer by the following scheme: + +\centering\includegraphics[scale=0.4]{images/application-delivery-load-balancing-diagram-simple-1.png} + +Load balancer distributes traffic by different mechanisms. + + +They are : +\begin{itemize} +\item[Round robin] default load balancing method. Round Robin mode passes each new connection request to the next server in line, eventually distributing connections evenly across the array of machines being load balanced. +\item[Weighted least] +\item[Ratio] The BIG-IP system distributes connections among pool members or nodes in a static rotation according to ratio weights that you define. In this case, the number of connections that each system receives over time is proportionate to the ratio weight you defined for each pool member or node. You set a ratio weight when you create each pool member or node. +\item[Dynamic Ratio] The Dynamic Ratio methods select a server based on various aspects of real-time server performance analysis. These methods are similar to the Ratio methods, except that with Dynamic Ratio methods, the ratio weights are system-generated, and the values of the ratio weights are not static. These methods are based on continuous monitoring of the servers, and the ratio weights are therefore continually changing +\item[Fastest (node) Fastest (application)] The Fastest methods select a server based on the least number of current sessions. +\item[Least Connections ]The Least Connections methods are relatively simple in that the BIG-IP system passes a new connection to the pool member or node that has the least number of active connections. +..... +\end{itemize} + + +The way load balancer distributes traffic, lie on the hypothesis in the perfect way (see previous chapter). + +Propose architecture (scheme). + +Haproxy requires less additional feature to support our needs or even already implements them. + +Consistent hashing algorithm or algorithm custom that takes list of available nodes from the request and load balance between them. + +Focus on the state of the node. + + +The purpose of our load balancing technique is to redirect request to nodes that are already consistent making decision on the request. + +Let's focus on dynamic ratio method. + + +Conclusion for this section: Nowadays there is lack of load balancers implementation that can support our need. +But a lot of them are opensource solutions and may be extended soon. + + +How many nodes at maximum load balancer supports +\chapter{Hybrid algorithm} +Other is described in next section (Algorithm) +\chapter{Own load balancing algorithm estimates} +Possibility to add it to load balancer +Where to get consistent nodes list from. + +(Hash Table? masy be. another db? no. separate API? it anyway will take list from dynamic dict.) +so hash table to store nodes, its structure, evaluation of requests + +\chapter{Distributed hash table} +What is distributed hash table and its implementations + + + +The maximum size of hash table + + +Performance of different storages (redis, ...). + + +Formulas to keep it stably fast. +Formula for number of nodes for DDS and number of keys in hash table (numbers of dataunits). + +Hash Table performance (read/write requests per second) - data from site, performance etc. + + +\chapter{Imitation model to communicate at load balancer level} +Architecture, diagrams, or experiments with algorithm +sequence , activity diagrams for all three solutions. + +To redirect over consistent nodes on API layer is a solution that delays response a lot. +Request come to not consistent node then redeirected to consistent node, but it is not alive, +then eventually come to the proper node. This solution is best to implement on load balancer algorithm level: get the consistent nodes and load balance between them by any enabled default algorithm (round robin, least response time, ...) + +But estimate both solutions. + +Имитационная модель для КАЖДОГО из solutions. + +\chapter{Mathematical Model of ... } +and model to increase consistency value. + + +Let we have distributed datastore with such characteristics: +\begin{tabular*}{\textwidth}{cp{0.5cm}p{0.8\textwidth}} +$N$&& is a finite set of nodes of a distributed datastore; \\ +$L$&& is a finite set of links of a distributed datastore; \\ +$\partial:L\rightarrow 2^N$&& is a mapping that associates each link with two nodes that it binds;\\ +$D$&& is a finite set of stored data units;\\ +$r:D\rightarrow 2^N$&& is a mapping that associates each data unit $d$ with a subset of nodes +that store its replica; \\ + +$N_d$&& is a finite set of nodes that are having given dataunit $d$; \\ +$l(N_d)$&& is a number of nodes in datastore that are having given dataunit; \\ +$n_c$&& is a number of nodes in a subset of $N_d$ where all nodes have the same replica. +\end{tabular*} +\chapter{Estimates, time complexity of algorithm basing on lb balancer, distributed hash table} +\chapter{Appendix: Load balancer, distributed hash table complexity estimates} +\begin{thebibliography}{00} + +\bibitem{bib:prob_approach} +Kyrylo Rukkas, Galyna Zholtkevych: +Distributed Datastores: Towards Probabilistic Approach for Estimation of Dependability, +ICTERI 2015: 523-534 + + +\bibitem{bib:lb} +P.P. Geethu Gopinatha, Shriram K.Vasudevan: +An In-depth Analysis and Study of Load Balancing Techniques in the Cloud Computing Environment, Procedia Computer Science Volume 50, 2015, Pages 427-432 +https://www.sciencedirect.com/science/article/pii/S1877050915005104 +https://devcentral.f5.com/articles/what-is-load-balancing-24740 + +\bibitem{bib:lb_mechanisms} + +% https://help.utk.edu/kb/index2.php?func=show&e=1699 + +\end{thebibliography} +\end{document} diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.toc" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.toc" new file mode 100644 index 0000000..0b4bdc2 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/index.toc" @@ -0,0 +1,10 @@ +\contentsline {chapter}{\numberline {1}Hypothesis: Distributed Datastore: Handle request consistent}{4} +\contentsline {chapter}{\numberline {2}Load balancer handling solution and its estimates}{5} +\contentsline {chapter}{\numberline {3}Hybrid algorithm}{7} +\contentsline {chapter}{\numberline {4}Own load balancing algorithm estimates}{8} +\contentsline {chapter}{\numberline {5}Distributed hash table}{9} +\contentsline {chapter}{\numberline {6}Imitation model to communicate at load balancer level}{10} +\contentsline {chapter}{\numberline {7}Mathematical Model of ... }{11} +\contentsline {chapter}{\numberline {8}Estimates, time complexity of algorithm basing on lb balancer, distributed hash table}{12} +\contentsline {chapter}{\numberline {9}Appendix: Load balancer, distributed hash table complexity estimates}{13} +\contentsline {likechapter}{\MakeUppercase {Biblography}}{13} diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/llncs.cls" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/llncs.cls" new file mode 100644 index 0000000..93c802e --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/English paper/llncs.cls" @@ -0,0 +1,1207 @@ +% LLNCS DOCUMENT CLASS -- version 2.17 (12-Jul-2010) +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science +% +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2010/07/12 v2.17 +^^J LaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openright\iftrue +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +% languages +\let\switcht@@therlang\relax +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index +\RequirePackage{aliascnt} + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} +\renewcommand\@pnumwidth{2em} +\renewcommand\@tocrmarg{3.5em} +% +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +% +\def\switcht@albion{% +\def\abstractname{Abstract.} +\def\ackname{Acknowledgement.} +\def\andname{and} +\def\lastandname{\unskip, and} +\def\appendixname{Appendix} +\def\chaptername{Chapter} +\def\claimname{Claim} +\def\conjecturename{Conjecture} +\def\contentsname{Table of Contents} +\def\corollaryname{Corollary} +\def\definitionname{Definition} +\def\examplename{Example} +\def\exercisename{Exercise} +\def\figurename{Fig.} +\def\keywordname{{\bf Keywords:}} +\def\indexname{Index} +\def\lemmaname{Lemma} +\def\contriblistname{List of Contributors} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\mailname{{\it Correspondence to\/}:} +\def\noteaddname{Note added in proof} +\def\notename{Note} +\def\partname{Part} +\def\problemname{Problem} +\def\proofname{Proof} +\def\propertyname{Property} +\def\propositionname{Proposition} +\def\questionname{Question} +\def\remarkname{Remark} +\def\seename{see} +\def\solutionname{Solution} +\def\subclassname{{\it Subject Classifications\/}:} +\def\tablename{Table} +\def\theoremname{Theorem}} +\switcht@albion +% Names of theorem like environments are already defined +% but must be translated if another language is chosen +% +% French section +\def\switcht@francais{%\typeout{On parle francais.}% + \def\abstractname{R\'esum\'e.}% + \def\ackname{Remerciements.}% + \def\andname{et}% + \def\lastandname{ et}% + \def\appendixname{Appendice} + \def\chaptername{Chapitre}% + \def\claimname{Pr\'etention}% + \def\conjecturename{Hypoth\`ese}% + \def\contentsname{Table des mati\`eres}% + \def\corollaryname{Corollaire}% + \def\definitionname{D\'efinition}% + \def\examplename{Exemple}% + \def\exercisename{Exercice}% + \def\figurename{Fig.}% + \def\keywordname{{\bf Mots-cl\'e:}} + \def\indexname{Index} + \def\lemmaname{Lemme}% + \def\contriblistname{Liste des contributeurs} + \def\listfigurename{Liste des figures}% + \def\listtablename{Liste des tables}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% + \def\notename{Remarque}% + \def\partname{Partie}% + \def\problemname{Probl\`eme}% + \def\proofname{Preuve}% + \def\propertyname{Caract\'eristique}% +%\def\propositionname{Proposition}% + \def\questionname{Question}% + \def\remarkname{Remarque}% + \def\seename{voir} + \def\solutionname{Solution}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tableau}% + \def\theoremname{Th\'eor\`eme}% +} +% +% German section +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% + \def\abstractname{Zusammenfassung.}% + \def\ackname{Danksagung.}% + \def\andname{und}% + \def\lastandname{ und}% + \def\appendixname{Anhang}% + \def\chaptername{Kapitel}% + \def\claimname{Behauptung}% + \def\conjecturename{Hypothese}% + \def\contentsname{Inhaltsverzeichnis}% + \def\corollaryname{Korollar}% +%\def\definitionname{Definition}% + \def\examplename{Beispiel}% + \def\exercisename{\"Ubung}% + \def\figurename{Abb.}% + \def\keywordname{{\bf Schl\"usselw\"orter:}} + \def\indexname{Index} +%\def\lemmaname{Lemma}% + \def\contriblistname{Mitarbeiter} + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Nachtrag}% + \def\notename{Anmerkung}% + \def\partname{Teil}% +%\def\problemname{Problem}% + \def\proofname{Beweis}% + \def\propertyname{Eigenschaft}% +%\def\propositionname{Proposition}% + \def\questionname{Frage}% + \def\remarkname{Anmerkung}% + \def\seename{siehe} + \def\solutionname{L\"osung}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tabelle}% +%\def\theoremname{Theorem}% +} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\renewcommand\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {\@arabic\c@chapter} + +\newif\if@mainmatter \@mainmattertrue +\newcommand\frontmatter{\cleardoublepage + \@mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + \@mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {12\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {8\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-12\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I\!R}} %reelle Zahlen +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts\, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus2\p@ \@minus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + \@starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def\@dotsep{2} + +\let\phantomsection=\relax + +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else +{}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% + +\def\@adcmk[#1]{\ifcase #1 \or +\def\@gtempa{\addnumcontentsmark}% + \or \def\@gtempa{\addcontentsmark}% + \or \def\@gtempa{\addcontentsmarkwop}% + \fi\@gtempa{toc}{chapter}% +} +\def\addtocmark{% +\phantomsection +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% +} + +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}% + \fi\par + \penalty\@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-\@highpenalty} + \addvspace{8pt plus 1pt} + \@tempdima \z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty \endgroup} + +\def\l@author#1#2{\addpenalty{\@highpenalty} + \@tempdima=15\p@ %\z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip + \textit{#1}\par + \penalty\@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} + \@starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} + \@starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\listfigurename}{\listfigurename}}% + \@starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + \@mkboth{\listtablename}{\listtablename}}% + \@starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def\@biblabel##1{##1.} + \small + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries + ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else + \@citea\def\@citea{,\,\hskip\z@skip}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else + \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +\@cons\@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def\@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {\@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\par + \def\,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def\@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} + +\long\def\@makecaption#1#2{% + \small + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def \@floatboxreset {% + \reset@font + \small + \@setnobreak + \@setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@dblfloat{table}} + {\end@dblfloat} + +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef\@author{No Author Given}% + \gdef\@title{No Title Given}% + \gdef\@subtitle{}% + \gdef\@institute{No Institute Given}% + \gdef\@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef\@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}\@institute}% + \ifnum\c@@inst=1\relax + \gdef\fnnstart{0}% + \else + \xdef\fnnstart{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + \@institute\par + \endgroup} + +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% +\@ifpackageloaded{babel}{% +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% +}{\switcht@@therlang}% +\providecommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1}% +} +\def\homedir{\~{ }} + +\def\subtitle#1{\gdef\@subtitle{#1}} +\clearheadinfo +% +%%% to avoid hyperref warnings +\providecommand*{\toclevel@author}{999} +%%% to make title-entry parent of section-entries +\providecommand*{\toclevel@title}{0} +% +\renewcommand\maketitle{\newpage +\phantomsection + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks +% + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef\@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef\@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{\@author}}% + \else + \def\\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% + \addcontentsline{toc}{author}{\toc@uthor}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef\@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef\@author{\copy\authrun}% + \markboth{\@author}{\@title}% + \fi + \endgroup + \setcounter{footnote}{\fnnstart}% + \clearheadinfo} +% +\def\@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + \let\newline\\ + {\Large \bfseries\boldmath + \pretolerance=10000 + \@title \par}\vskip .8cm +\if!\@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + \@subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}\@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +\@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@thmcountersep{} +\def\@thmcounterend{.} + +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} + +% definition of \spnewtheorem with number + +\def\@spnthm#1#2{% + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} + +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spothm#1[#2]#3#4#5{% + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\newaliascnt{#1}{#2}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}}} + +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\refstepcounter{#1}% +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} + +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def\@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} + +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def\@sthm#1#2{\@Ynthm{#1}{#2}} + +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} + +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def\@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1\@thmcounterend}]} + +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} + +\if@envcntsect + \def\@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + \@addtoreset{theorem}{section} + \else + \@addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def\@takefromreset#1#2{% + \def\@tempa{#1}% + \let\@tempd\@elt + \def\@elt##1{% + \def\@tempb{##1}% + \ifx\@tempa\@tempb\else + \@addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + \@tempc + \let\@elt\@tempd} + +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput +%end of file llncs.cls diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/casus.sty" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/casus.sty" new file mode 100644 index 0000000..0b2fcf6 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/casus.sty" @@ -0,0 +1,193 @@ +%% +%% This is file `casus.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% vakthesis.dtx (with options: `casus') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from casus.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file vakthesis.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{casus} + [2004/02/20 v0.01 Casus (OMB)] +%% +\def\declinenoun{} +\def\declineadjective{} +\newcommand{\declension}[1]{% + \def\@partofspeech{noun}% + \@split@declension#1.} +\def\@split@declension#1. {% + \ifx\relax#1\relax + \else + \@split@entry#1. + \expandafter\@split@declension + \fi} +\def\@split@entry{\@ifnextchar[\@extract@partofspeech + {\expandafter\csname @split@entry@\@partofspeech\endcsname}} +\def\@extract@partofspeech[#1] {\def\@partofspeech{#1}% + \expandafter\csname @split@entry@\@partofspeech\endcsname} +\def\@split@entry@noun#1 #2 #3 #4 #5 #6 #7. {% + \g@addto@macro\declinenoun{\entry{#1}{#2}{#3}{#4}{#5}{#6}{#7}}} +\def\@split@entry@adjective#1 #2 #3 #4 #5 #6. {% + \g@addto@macro\declineadjective{\entry{#1}{#2}{#3}{#4}{#5}{#6}}} +%% +\declension{% ' % +[noun] +- . +- . +- 쳿 쳿 쳺 쳿 쳺. +- . +- . +- . +- . +- . +-' ' ' ' ' ' '. +%% I +%% +- . +- . +- . +- . +%% ' +- . +- . +%% +- . +- . +- . +- . +[adjective] +- . +- . +- . +- . +- . +- . +} +\newif\if@unknownword +%% ³ #2 #3 +%% ukr rus eng +%% N 0 nominative +%% G 1 genitive +%% D 2 dative +%% A 3 accusative +%% I 4 instrumental +%% L 5 locative +%% ablative(- Latin) +%% prepositional +%% V 6 vocative +\newcommand{\case}[3][noun]{% + \def\@partofspeech{#1}% + \def\@temp{adjective}% +%% (, , , ...) + \def\@numbercase{\if N#20\else\if G#21\else\if D#22\else + \if A#23\else\if I#24\else\if L#25\else\if V#26\else + 7\fi\fi\fi\fi\fi\fi\fi}% + \def\@worda{}% + \ifnum\@numbercase>6 + \def\@worda{#3}\typeout{Unknown caseID: `#2'.}% + \else + \ifx\@partofspeech\@temp + \ifnum\@numbercase=6 + \def\@worda{#3}% + \typeout{Adjective does not have vocative case.}% + \else + \@declineword{#3}\@nil + \fi + \else + \@declineword{#3}\@nil + \fi + \fi + \@worda} +\def\@declineword#1\@nil{% + \ifx\relax#1\relax + \else + \@unknownwordfalse + \def\entry{\expandafter + \csname @case@\@partofspeech\endcsname + {\@numbercase}{\ifx\@worda\@empty\else-\fi#1}}% + \def\lastentry{\@unknownwordtrue}% + \expandafter\csname decline\@partofspeech\endcsname\lastentry + \if@unknownword + \@shift#1\@nil + \else + \g@addto@macro\@worda{\@wordb}% + \fi + \fi} +\def\@shift#1{\g@addto@macro\@worda{#1}\@declineword} +\def\@case@noun#1#2#3#4#5#6#7#8#9{% + \edef\@tempa{#2}\edef\@tempb{#3}% + \ifx\@tempa\@tempb + \def\@wordb{\ifcase#1 \@ifnextchar-\@gobble\relax#3\or + #4\or#5\or#6\or#7\or#8\or#9\fi}% + \expandafter\@gobbleallentries + \fi} +\def\@case@adjective#1#2#3#4#5#6#7#8{% + \edef\@tempa{#2}\edef\@tempb{#3}% + \ifx\@tempa\@tempb + \def\@wordb{\ifcase#1 \@ifnextchar-\@gobble\relax#3\or + #4\or#5\or#6\or#7\or#8\fi}% + \expandafter\@gobbleallentries + \fi} +\def\@gobbleallentries#1\lastentry{} +%% +\newcommand{\paradigm}[2][noun]{% +\begin{list}{}{\itemsep0pt\parsep0pt\def\makelabel##1{##1\hfil}} +\item[.] \case[#1]{N}{#2} +\item[.] \case[#1]{G}{#2} +\item[.] \case[#1]{D}{#2} +\item[.] \case[#1]{A}{#2} +\item[.] \case[#1]{I}{#2} +\item[.] \case[#1]{L}{#2} +\ifthenelse{\equal{#1}{noun}}{\item[.] \case[#1]{V}{#2}}{} +\end{list}} +%% #2 #1 +\newcommand{\transformsentence}[2]{% + \def\@case{#1}% + \def\@processword##1{\case[adjective]{\@case}{##1} }% + \expandafter\@split@sentence#2 } +\def\@split@sentence#1 {% + \ifx\relax#1\relax + \unskip + \else + \ifthenelse{\equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{}\or\equal{#1}{̳}\or + \equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{}\or\equal{#1}{}\or + \equal{#1}{'}\or\equal{#1}{'}} + {\case[noun]{\@case}{#1} + \def\@processword##1{##1 }} + {\@processword{#1}}% + \expandafter\@split@sentence + \fi} +%% #1 +\newcommand{\fullset}[1]{% +\begin{list}{}{\itemsep0pt\parsep0pt\def\makelabel##1{##1\hfil}} +\item[.] #1 +\item[.] \transformsentence{G}{#1} +\item[.] \transformsentence{D}{#1} +\item[.] \transformsentence{A}{#1} +\item[.] \transformsentence{I}{#1} +\item[.] \transformsentence{L}{#1} +\item[.]\transformsentence{V}{#1} +\end{list}} +\endinput +%% +%% End of file `casus.sty'. diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/llncs.cls" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/llncs.cls" new file mode 100644 index 0000000..93c802e --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/llncs.cls" @@ -0,0 +1,1207 @@ +% LLNCS DOCUMENT CLASS -- version 2.17 (12-Jul-2010) +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science +% +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2010/07/12 v2.17 +^^J LaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openright\iftrue +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +% languages +\let\switcht@@therlang\relax +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index +\RequirePackage{aliascnt} + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} +\renewcommand\@pnumwidth{2em} +\renewcommand\@tocrmarg{3.5em} +% +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +% +\def\switcht@albion{% +\def\abstractname{Abstract.} +\def\ackname{Acknowledgement.} +\def\andname{and} +\def\lastandname{\unskip, and} +\def\appendixname{Appendix} +\def\chaptername{Chapter} +\def\claimname{Claim} +\def\conjecturename{Conjecture} +\def\contentsname{Table of Contents} +\def\corollaryname{Corollary} +\def\definitionname{Definition} +\def\examplename{Example} +\def\exercisename{Exercise} +\def\figurename{Fig.} +\def\keywordname{{\bf Keywords:}} +\def\indexname{Index} +\def\lemmaname{Lemma} +\def\contriblistname{List of Contributors} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\mailname{{\it Correspondence to\/}:} +\def\noteaddname{Note added in proof} +\def\notename{Note} +\def\partname{Part} +\def\problemname{Problem} +\def\proofname{Proof} +\def\propertyname{Property} +\def\propositionname{Proposition} +\def\questionname{Question} +\def\remarkname{Remark} +\def\seename{see} +\def\solutionname{Solution} +\def\subclassname{{\it Subject Classifications\/}:} +\def\tablename{Table} +\def\theoremname{Theorem}} +\switcht@albion +% Names of theorem like environments are already defined +% but must be translated if another language is chosen +% +% French section +\def\switcht@francais{%\typeout{On parle francais.}% + \def\abstractname{R\'esum\'e.}% + \def\ackname{Remerciements.}% + \def\andname{et}% + \def\lastandname{ et}% + \def\appendixname{Appendice} + \def\chaptername{Chapitre}% + \def\claimname{Pr\'etention}% + \def\conjecturename{Hypoth\`ese}% + \def\contentsname{Table des mati\`eres}% + \def\corollaryname{Corollaire}% + \def\definitionname{D\'efinition}% + \def\examplename{Exemple}% + \def\exercisename{Exercice}% + \def\figurename{Fig.}% + \def\keywordname{{\bf Mots-cl\'e:}} + \def\indexname{Index} + \def\lemmaname{Lemme}% + \def\contriblistname{Liste des contributeurs} + \def\listfigurename{Liste des figures}% + \def\listtablename{Liste des tables}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% + \def\notename{Remarque}% + \def\partname{Partie}% + \def\problemname{Probl\`eme}% + \def\proofname{Preuve}% + \def\propertyname{Caract\'eristique}% +%\def\propositionname{Proposition}% + \def\questionname{Question}% + \def\remarkname{Remarque}% + \def\seename{voir} + \def\solutionname{Solution}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tableau}% + \def\theoremname{Th\'eor\`eme}% +} +% +% German section +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% + \def\abstractname{Zusammenfassung.}% + \def\ackname{Danksagung.}% + \def\andname{und}% + \def\lastandname{ und}% + \def\appendixname{Anhang}% + \def\chaptername{Kapitel}% + \def\claimname{Behauptung}% + \def\conjecturename{Hypothese}% + \def\contentsname{Inhaltsverzeichnis}% + \def\corollaryname{Korollar}% +%\def\definitionname{Definition}% + \def\examplename{Beispiel}% + \def\exercisename{\"Ubung}% + \def\figurename{Abb.}% + \def\keywordname{{\bf Schl\"usselw\"orter:}} + \def\indexname{Index} +%\def\lemmaname{Lemma}% + \def\contriblistname{Mitarbeiter} + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\mailname{{\it Correspondence to\/}:} + \def\noteaddname{Nachtrag}% + \def\notename{Anmerkung}% + \def\partname{Teil}% +%\def\problemname{Problem}% + \def\proofname{Beweis}% + \def\propertyname{Eigenschaft}% +%\def\propositionname{Proposition}% + \def\questionname{Frage}% + \def\remarkname{Anmerkung}% + \def\seename{siehe} + \def\solutionname{L\"osung}% + \def\subclassname{{\it Subject Classifications\/}:} + \def\tablename{Tabelle}% +%\def\theoremname{Theorem}% +} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\renewcommand\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {\@arabic\c@chapter} + +\newif\if@mainmatter \@mainmattertrue +\newcommand\frontmatter{\cleardoublepage + \@mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + \@mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {12\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {8\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-12\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I\!R}} %reelle Zahlen +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts\, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus2\p@ \@minus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + \@starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def\@dotsep{2} + +\let\phantomsection=\relax + +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else +{}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% + +\def\@adcmk[#1]{\ifcase #1 \or +\def\@gtempa{\addnumcontentsmark}% + \or \def\@gtempa{\addcontentsmark}% + \or \def\@gtempa{\addcontentsmarkwop}% + \fi\@gtempa{toc}{chapter}% +} +\def\addtocmark{% +\phantomsection +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% +} + +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}% + \fi\par + \penalty\@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-\@highpenalty} + \addvspace{8pt plus 1pt} + \@tempdima \z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty \endgroup} + +\def\l@author#1#2{\addpenalty{\@highpenalty} + \@tempdima=15\p@ %\z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip + \textit{#1}\par + \penalty\@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} + \@starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} + \@starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\listfigurename}{\listfigurename}}% + \@starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + \@mkboth{\listtablename}{\listtablename}}% + \@starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def\@biblabel##1{##1.} + \small + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries + ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else + \@citea\def\@citea{,\,\hskip\z@skip}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else + \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +\@cons\@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def\@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {\@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\par + \def\,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def\@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} + +\long\def\@makecaption#1#2{% + \small + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def \@floatboxreset {% + \reset@font + \small + \@setnobreak + \@setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@dblfloat{table}} + {\end@dblfloat} + +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef\@author{No Author Given}% + \gdef\@title{No Title Given}% + \gdef\@subtitle{}% + \gdef\@institute{No Institute Given}% + \gdef\@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef\@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}\@institute}% + \ifnum\c@@inst=1\relax + \gdef\fnnstart{0}% + \else + \xdef\fnnstart{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + \@institute\par + \endgroup} + +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% +\@ifpackageloaded{babel}{% +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% +}{\switcht@@therlang}% +\providecommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1}% +} +\def\homedir{\~{ }} + +\def\subtitle#1{\gdef\@subtitle{#1}} +\clearheadinfo +% +%%% to avoid hyperref warnings +\providecommand*{\toclevel@author}{999} +%%% to make title-entry parent of section-entries +\providecommand*{\toclevel@title}{0} +% +\renewcommand\maketitle{\newpage +\phantomsection + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks +% + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef\@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef\@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{\@author}}% + \else + \def\\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% + \addcontentsline{toc}{author}{\toc@uthor}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef\@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef\@author{\copy\authrun}% + \markboth{\@author}{\@title}% + \fi + \endgroup + \setcounter{footnote}{\fnnstart}% + \clearheadinfo} +% +\def\@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + \let\newline\\ + {\Large \bfseries\boldmath + \pretolerance=10000 + \@title \par}\vskip .8cm +\if!\@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + \@subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}\@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +\@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@thmcountersep{} +\def\@thmcounterend{.} + +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} + +% definition of \spnewtheorem with number + +\def\@spnthm#1#2{% + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} + +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spothm#1[#2]#3#4#5{% + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\newaliascnt{#1}{#2}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}}} + +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\refstepcounter{#1}% +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} + +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def\@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} + +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def\@sthm#1#2{\@Ynthm{#1}{#2}} + +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} + +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def\@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1\@thmcounterend}]} + +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} + +\if@envcntsect + \def\@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + \@addtoreset{theorem}{section} + \else + \@addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def\@takefromreset#1#2{% + \def\@tempa{#1}% + \let\@tempd\@elt + \def\@elt##1{% + \def\@tempb{##1}% + \ifx\@tempa\@tempb\else + \@addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + \@tempc + \let\@elt\@tempd} + +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput +%end of file llncs.cls diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.aux" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.aux" new file mode 100644 index 0000000..1e8acc0 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.aux" @@ -0,0 +1,31 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\catcode `"\active +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\babel@aux{ukrainian}{} +\@writefile{toc}{\contentsline {chapter}{\IeC {\CYRV }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyru }\IeC {\cyrp }}{3}{chapter*.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {paragraph}{\bfseries \IeC {\CYRA }\IeC {\cyrk }\IeC {\cyrt }\IeC {\cyru }\IeC {\cyra }\IeC {\cyrl }\IeC {\cyrsftsn }\IeC {\cyrn }\IeC {\cyrii }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrsftsn } \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrm }\IeC {\cyri }.}{3}{section*.2}} +\@writefile{toc}{\contentsline {paragraph}{\bfseries \IeC {\CYRV }\IeC {\cyrz }\IeC {\cyra }\IeC {\cyrie }\IeC {\cyrm }\IeC {\cyro }\IeC {\cyrz }\IeC {\cyrv }'\IeC {\cyrya }\IeC {\cyrz }\IeC {\cyro }\IeC {\cyrk } \IeC {\cyrr }\IeC {\cyro }\IeC {\cyrb }\IeC {\cyro }\IeC {\cyrt }\IeC {\cyri } \IeC {\cyrz } \IeC {\cyrn }\IeC {\cyra }\IeC {\cyru }\IeC {\cyrk }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyri }\IeC {\cyrm }\IeC {\cyri } \IeC {\cyrp }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrg }\IeC {\cyrr }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyri }, \IeC {\cyrp }\IeC {\cyrl }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyri }, \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrm }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyri }.}{3}{section*.3}} +\@writefile{toc}{\contentsline {paragraph}{\bfseries \IeC {\CYRM }\IeC {\cyre }\IeC {\cyrt }\IeC {\cyra } \IeC {\cyrii } \IeC {\cyrz }\IeC {\cyra }\IeC {\cyrv }\IeC {\cyrd }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrya } \IeC {\cyrd }\IeC {\cyro }\IeC {\cyrs }\IeC {\cyrl }\IeC {\cyrii }\IeC {\cyrd }\IeC {\cyrzh }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrya }.}{4}{section*.4}} +\@writefile{toc}{\contentsline {chapter}{\numberline {{\cyrillictext \CYRR \cyro \cyrz \cyrd \cyrii \cyrl }\nobreakspace 1}\IeC {\CYRB }\IeC {\cyra }\IeC {\cyrl }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyrs }\IeC {\cyru }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrya } \IeC {\cyru }\IeC {\cyrz }\IeC {\cyrg }\IeC {\cyro }\IeC {\cyrd }\IeC {\cyrzh }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyro }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrii }}{5}{chapter.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{loa}{\addvspace {10\p@ }} diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.out" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.out" new file mode 100644 index 0000000..ae53657 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.out" @@ -0,0 +1,2 @@ +\BOOKMARK [0][-]{chapter*.1}{}{}% 1 +\BOOKMARK [0][-]{chapter.1}{ }{}% 2 diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.tex" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.tex" new file mode 100644 index 0000000..e95f7b7 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.tex" @@ -0,0 +1,248 @@ +%% +%% This is file `xampl-thesis.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% vakthesis.dtx (with options: `xampl-thesis') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from xampl-thesis.tex. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file vakthesis.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +% Існують кілька опцій, які необхідно вказувати як факультативний +% аргумент команди \documentclass. Наприклад, для докторської +% дисертації необхідно написати +% \documentclass[d]{vakthesis} + +% Налагодження кодування шрифта, кодування вхідного файла +% та вибір необхідних мов + +\documentclass[14pt]{vakthesis} +\usepackage{extsizes} +\usepackage{cmap} % для кодировки шрифтов в pdf +\usepackage[T1,T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[english,ukrainian]{babel} + +%\usepackage{libertine} +%\usepackage[letterspace=-36]{microtype} + +% Підключення необхідних пакетів. Наприклад, +% Пакети AMS для підтримки математики, теорем, спеціальних шрифтів +% \usepackage{phd-thesis-library} +\usepackage{packages} +\allowdisplaybreaks + + +% Налагодження параметрів сторінки (зокрема берегів). +% Наприклад, за допомогою пакета geometry +\usepackage{geometry} +\geometry{hmargin={30mm,15mm},lines=29,vcentering} + +% Якщо потрібно працювати лише з деякими розділами +%\includeonly{xampl-ch1,xampl-bib} + +% Інформація про використані пакети тощо. +% Може знадобитися для відлагодження класу документа +%\listfiles + + + +% Титульна сторінка +\makeatletter +\def\onesupervisorname{Науковий\ + керівник}% + \def\manysupervisorsname{Наукові\ + керівники} +\makeatother + +\makeatletter +%\def\@maketitle{% +% {\scshape +% \@ifundefined{@institution@office}{\relax}{\@institution@office\par} +% \@institution\par} +% \vspace{\stretch{3}}% +% {\raggedleft \@ifundefined{@secret}{}{\@secret\hfill}% +% На правах\ +% рукопису \par}% +% \vspace{\stretch{2}}% +% {\bfseries\expandafter\emphsurname\@author \par}% +% \vspace{\stretch{2}}% +% {\raggedleft \CYRU\CYRD\CYRK\ \@udc \par}% +% \vspace{\stretch{1}}% +% {\large\bfseries\scshape \@title \par}% +% \vspace{\stretch{2}}% +% \@specialitycode\ --- \@specialityname\par +% \vspace{\stretch{2}}% +% Дисертація\ +% на\ здобуття\ +% вченої\ +% ступені\linebreak[1]% +% \degreename\cyra\ +% \@science\par%?\linebreak[1]% +% \vspace{\stretch{2}}% +% {\raggedleft +% \let\\\@format@person +% \ifx\@supervisor\@empty +% \hbox{}\hbox{}\hbox{} +% \else +% \@supervisors@caption\@supervisors\relax +% \fi +% \par}% +% \vspace{\stretch{3}}% +% \@town\ --- \@year} +%\def\@supervisors@caption{% +% \ifnum\value{@supervisors@count}>1 +% \manysupervisorsname:% +% \else +% \onesupervisorname +% \fi} +%\def\@format@person#1#2{\linebreak[4]% +% \textbf{#1}, \linebreak[1]\@@format@person#2,,\@nil +% \futurelet\next\@delimit@person} +%\def\@@format@person#1,#2,#3\@nil{#1% +% \if\relax#2\relax\else, \linebreak[0]#2\fi} +%\def\@delimit@person{\ifx\relax\next\else,\fi} +%\def\emphsurname#1 #2{\textsc{#1} #2} +%\makeatother + +% Локальні означення +%\hyphenpenalty=10000 +\input{commands} +\input{names} + + +\begin{document} + +%\setdefaultleftmargin{0pt}{}{}{}{}{} + +% Назва дисертації +\title{Математичні імітаційні моделі для забезпечення узгодженості для розподілених сховищ даних} +% Прізвище, ім'я, по батькові здобувача +\author{Жолткевич Галина Григоріївна} +% Прізвище, ім'я, по батькові наукового керівника/консультанта +\supervisor{Рукас Кирило Маркович} +% Науковий ступінь, вчене звання наукового керівника/консультанта + {доктор технічних наук, доцент} +% Спеціальність +%\speciality{01.05.02} +% Варіант із вказуванням факультативних аргументів +\speciality[Математичне моделювання та обчислювальні методи]{01.05.02}[технічних наук] +% Індекс за УДК +\udc{004.042/519.713.2} +% Установа, де виконана робота, і місто +\institution{Міністерство освіти і науки України \linebreak Харківський національний університет імені~В.Н.~Каразіна}{Харків} + % Рік, коли написана дисертація +\date{2019} + +% Тут буде титульна сторінка +\maketitle + +% Зміст +\tableofcontents + +\chapter*{Вступ} + +\paragraph{\bfseries Актуальність теми.} + +В наше сьогодення інноваційні технології з'являються дуже швидко, а існуючі розвиваються з неймовірною швидкістю. Гіперлуп, багаточисленні дослідження космосу, наукові роботи в інших галузях, таких, +як медицина, зелені мережі, а також, більш побутові, але все ще такі потрібні технології, такі, як +комунікації, транспорт, розумні будинки... Не можна нехтувати тим фактом, що всі ці системи потребують +більшої гнучкості, швидкості, надійності та засобів для зберігання інформації також надійно та швидко і доступно, а інколи навіть доступність має бути майже у будь-якій точці земної кулі. +Тому одним з найважливіших компонентів для багатьох таких систем є швидке і надійне розподілене сховище. +В 21 столітті термін "розподілене сховище" становиться вже звичним. Деякі сховища збільшують кількість вузлів, деякі - ні. Причиною цьому є те, що багато з таких систем потребують сильної узгодженості даних. Але якщо збільшувати кількість вузлів для сховища, консистентність падає дуже швидко. А для деяких систем це важлива частина для їх стабільної роботи. + +Бо є дуже відома CAP-теорема, яка стверджує, що неможливо одночасно задовільнити всі три +характеристики для сховища, узгодженість (consistency), доступність (availability), +стійкість до розділення (partition tolerance). + +Ми не збираємося оскаржувати цю теорему, але робимо спробу обійти цю проблему. Механізм для цього і буде темою для цієї роботи. + +\paragraph{\bfseries Взаємозв'язок роботи з науковими програмами, планами, темами.} +Диссертаційна робота виконана згідно з планом \linebreak +научно-исследовательских работ Харьковского национального университета имени В.Н. Каразина +в рамках темы "Математическое и компьютерное моделирование информационных процессов в сложных естественных и технических системах" +(номер государственной регистрации 0112U002098). + + +\paragraph{\bfseries Мета і завдання дослідження.} +Метою роботи являється побудува імітаційних та математичних моделей для механізму +підтримки сильної узгодженості у розподілених сховищах даних, проведення експериментів, оцінювання складності імітаційних моделей, побудува метрик, за якими можна дослідити складність даних моделей, а також розробка +обчислювальних методів для сформованого механізму. Це дозволить оцінити, наскільки можна розширити будь-яку розподілену систему і сформує методи для коректної роботи за такими умовами. + +Для доягнення цієї мети у роботі розв'язані наступні задачі: +%\begin{enumerate}[widest=9999,itemindent=*,leftmargin=0pt] +%\item +%Проведен анализ проявившихся в теории и практике программной инженерии тенденций, +%состоящих в изменении концепций разработки архитектурных решений больших систем обработки информации. +%Это позволило сделать вывод о расширении использования асинхронных архитектурных решений основанных на событийном управлении, +%что обосновывает актуальность задачи совершенствования математических моделей, +%используемых для статического анализа, спецификации и проектирования систем этого класса. +% +%\item +%Проведен анализ существующих событийно-управляемых архитектурных стилей с целью выявления их инвариантных свойств, +%которые должны отражаться в общей системной модели событийно-управляемой системы обработки информации. +%По результатам проведенного анализа построена общая системная модель компонента событийно-управляемой системы обработки информации. +% +%\item +%Исследованы свойства потоков сложных событий на предмет возможности распознавания в них заданных множеств сложных событий. +% +%\item +%Обосновано применение абстрактных предавтоматов для математического моделирования компонентов событийно-управляемых систем обработки информации +%путем доказательства двойственности абстрактных предавтоматов и CEP-машин. +% +%\item +%Рассмотрен вопрос алгоритмической реализуемости CEP-машин. +%Выявлены возможные аномалии вычислимости таких машин и предложен метод их устранения. +% +%\item +%Разработан специальный класс CEP-машин распознающих сложные события описываемые регулярными языками. +%А также, на базе технологий машинного обучения, построен метод их синтеза +% +%\item +%Разработаны прототипы программных утилит статического анализа, +%обеспечивающих верификацию программных компонентов событийно-управляемых систем обработки информации, +%которые реализуют предложенные и обоснованные в работе вычислительные методы. +% +%\item +%Проведена проверка прототипов программных утилит статического анализа путем их использования при разработке программного обеспечения. +%\end{enumerate} + +\chapter{Балансування узгодженості} + +Наскільки нам відомо, що відповідно до CAP-теореми можна задовільнити тільки будь-які дві з трьох характеристик +для розподіленого сховища даних. +В цьому розділі розглядається можливість досягнути компромісу та забезпечити консистентні відповіді +від бази даних, не втрачая доступності бази. + +Ми розуміємо, що консистентність + + In this chapter we make attempt to reach compromise and ensure or increase consistency value for any distributed datastore without losing availability and partition tolerance. +We would like to introduce the idea first and then estimate its impact availability and partition tolerance. + +So let us go deeper into a problem. + +Imagine we have a distributed datastore that has N nodes. We do not take into account for now role of each node +(master or slave) and assume that each node can accept read and write requests. Now we focus on the mechanism +of database request accepting and processing. If one of nodes accepted write request, we claim that the +datastore system will reach fast enough of consistency value to maintain consistent response. + +What if to try to get round this problem by handling request to database by the list of consistent nodes for. appropriate to the dataunit incoming in the request. +We want to estimate how it may impact availability and partition tolerance if we want to +get round consistency issue this way. + +There are several solutions. But they all have general architecture: +(Picture of architecture) + +\end{document} \ No newline at end of file diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.toc" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.toc" new file mode 100644 index 0000000..f33316c --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/phd.toc" @@ -0,0 +1,6 @@ +\babel@toc {ukrainian}{} +\contentsline {chapter}{\IeC {\CYRV }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyru }\IeC {\cyrp }}{3}{chapter*.1} +\contentsline {paragraph}{\bfseries \IeC {\CYRA }\IeC {\cyrk }\IeC {\cyrt }\IeC {\cyru }\IeC {\cyra }\IeC {\cyrl }\IeC {\cyrsftsn }\IeC {\cyrn }\IeC {\cyrii }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrsftsn } \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrm }\IeC {\cyri }.}{3}{section*.2} +\contentsline {paragraph}{\bfseries \IeC {\CYRV }\IeC {\cyrz }\IeC {\cyra }\IeC {\cyrie }\IeC {\cyrm }\IeC {\cyro }\IeC {\cyrz }\IeC {\cyrv }'\IeC {\cyrya }\IeC {\cyrz }\IeC {\cyro }\IeC {\cyrk } \IeC {\cyrr }\IeC {\cyro }\IeC {\cyrb }\IeC {\cyro }\IeC {\cyrt }\IeC {\cyri } \IeC {\cyrz } \IeC {\cyrn }\IeC {\cyra }\IeC {\cyru }\IeC {\cyrk }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyri }\IeC {\cyrm }\IeC {\cyri } \IeC {\cyrp }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrg }\IeC {\cyrr }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyri }, \IeC {\cyrp }\IeC {\cyrl }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyri }, \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrm }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyri }.}{3}{section*.3} +\contentsline {paragraph}{\bfseries \IeC {\CYRM }\IeC {\cyre }\IeC {\cyrt }\IeC {\cyra } \IeC {\cyrii } \IeC {\cyrz }\IeC {\cyra }\IeC {\cyrv }\IeC {\cyrd }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrya } \IeC {\cyrd }\IeC {\cyro }\IeC {\cyrs }\IeC {\cyrl }\IeC {\cyrii }\IeC {\cyrd }\IeC {\cyrzh }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrya }.}{4}{section*.4} +\contentsline {chapter}{\numberline {{\cyrillictext \CYRR \cyro \cyrz \cyrd \cyrii \cyrl }\nobreakspace 1}\IeC {\CYRB }\IeC {\cyra }\IeC {\cyrl }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyrs }\IeC {\cyru }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrya } \IeC {\cyru }\IeC {\cyrz }\IeC {\cyrg }\IeC {\cyro }\IeC {\cyrd }\IeC {\cyrzh }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyro }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrii }}{5}{chapter.1} diff --git "a/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/speciality.20070212N70" "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/speciality.20070212N70" new file mode 100644 index 0000000..d1894c1 --- /dev/null +++ "b/papers/\320\232\320\260\320\275\320\264\320\270\320\264\320\260\321\202\321\201\320\272\320\260\321\217/Ukrainian paper/speciality.20070212N70" @@ -0,0 +1,690 @@ +%% +%% This is file `speciality.20070212N70', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% vakthesis.dtx (with options: `speciality') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from speciality.20070212N70. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file vakthesis.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +% speciality.20070212N70 +% +% 12.02.2007 70 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% , +% , +% +% +% << ...>> +% 23.06.2005 377 +% , +% 14.02.2006 73, +% 29.05.2006 263, +% 19.09.2006 407, +% 12.02.2007 70 +% ̳ +% 05.07.2005 713/10993, +% 06.03.2006 236/12110, +% 07.06.2006 682/12556, +% 27.09.2006 1075/12949, +% 21.02.2007 159/13426 +% +% +% http://www.vak.org.ua/docs//spec_boards/spec_list.pdf +% ( 12.07.2007) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% : +% * +% ## +% * +% ##.## +% * +% ##.##.## / +% ! +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +01 - +% +01.01 +01.01.01 /- +01.01.02 /- +01.01.03 /- +01.01.04 /- +01.01.05 /- +01.01.06 /- +01.01.07 /- +01.01.08 , /- +01.01.09 /- +01.01.10 /- +% +01.02 +01.02.01 /- +01.02.04 /- / +01.02.05 , /- / +% +01.03 +01.03.01 /- +01.03.02 i, ii/- +01.03.03 /- +% +01.04 +01.04.01 , /- +01.04.02 /- +01.04.03 /- +01.04.04 /- +01.04.05 , /- +01.04.06 /- +01.04.07 /- / +01.04.08 /- / +01.04.09 /- +01.04.10 /- +01.04.11 /- +01.04.13 /- +01.04.14 /- +01.04.15 /- +01.04.16 , /- / +01.04.17 , /- / +01.04.18 /- / +01.04.19 /- +01.04.20 /- / +01.04.21 /- +01.04.22 /- +01.04.24 /- +% +01.05 +01.05.01 /- +01.05.02 /- / +01.05.03 /- / +01.05.04 /- / +% +01.06 - +01.06.01 - /- +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +02 +02.00.01 / +02.00.02 / +02.00.03 / +02.00.04 / +02.00.05 / +02.00.06 / +02.00.08 / +02.00.09 / +02.00.10 / / +02.00.11 / +02.00.13 / +02.00.15 / +02.00.19 / +02.00.21 / +02.00.22 쳿/ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +03 +03.00.01 / / +03.00.02 / /- / +03.00.03 / +03.00.04 / / / / +03.00.05 / +03.00.06 / / +03.00.07 / / / +03.00.08 / +03.00.09 / +03.00.10 / +03.00.11 , , / +03.00.12 / / +03.00.13 / / / +03.00.14 / / +03.00.15 / / / +03.00.16 / / / +03.00.17 / +03.00.18 / +03.00.19 / +03.00.20 / / / +03.00.21 / / +03.00.22 / +03.00.23 㳿/ +03.00.24 / +03.00.25 , / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +04 +04.00.01 / +04.00.02 / / +04.00.04 / +04.00.05 / /- +04.00.06 / +04.00.07 / +04.00.08 / +04.00.09 / +04.00.10 / +04.00.11 / / +04.00.16 / +04.00.17 / +04.00.19 / / +04.00.20 , / +04.00.21 / +04.00.22 / /- +04.00.23 㳿/ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +05 +% +05.01 , +05.01.01 , / +05.01.02 , / +05.01.03 / / +05.01.04 / / / +% +05.02 +05.02.01 / +05.02.02 / +05.02.04 / +05.02.08 / +05.02.09 / +05.02.10 / +% +05.03 +05.03.01 , / +05.03.05 / +05.03.06 㳿/ +05.03.07 - / +% +05.05 +05.05.01 / +05.05.02 / +05.05.03 / +05.05.04 , / +05.05.05 - / +05.05.06 / +05.05.08 / +05.05.10 / +05.05.11 / +05.05.12 / +05.05.13 / +05.05.14 , , / +05.05.16 / +05.05.17 / +% +05.07 - +05.07.01 / +05.07.02 , / +05.07.06 , / +05.07.12 / /- / +05.07.14 - / +% +05.08 +05.08.01 / +05.08.03 / +% +05.09 +05.09.01 / +05.09.03 / +05.09.05 / +05.09.07 / +05.09.08 / +05.09.12 㳿/ +05.09.13 / +% +05.11 +05.11.01 / +05.11.03 / +05.11.04 / +05.11.05 / +05.11.07 / +05.11.08 / +05.11.13 / +05.11.17 / +% +05.12 +05.12.02 / +05.12.07 / +05.12.13 / +05.12.17 / +05.12.20 / +% +05.13 , +05.13.03 / +05.13.05 ' / +05.13.06 㳿/ +05.13.07 / +05.13.09 / +05.13.12 / +05.13.21 / +05.13.22 / +05.13.23 / +% +05.14 +05.14.01 / +05.14.02 , / +05.14.06 / +05.14.08 㳿/ +05.14.14 / +% +05.15 +05.15.01 / +05.15.02 / +05.15.03 / +05.15.04 / +05.15.06 / +05.15.08 / +05.15.09 / +05.15.12 / +05.15.13 , / +% +05.16 +05.16.01 / +05.16.02 / +05.16.04 / +05.16.06 / +% +05.17 㳿 +05.17.01 / +05.17.03 / +05.17.04 / +05.17.06 / +05.17.07 - / +05.17.08 㳿/ +05.17.11 / +05.17.14 糿/ +05.17.15 / +05.17.18 / +05.17.21 / +% +05.18 +05.18.01 , / +05.18.05 / +05.18.06 , - / +05.18.12 , / +05.18.13 / +05.08.15 / +05.18.16 / +05.18.18 , / +05.18.19 , / +% +05.22 +05.22.01 / +05.22.02 / +05.22.06 / +05.22.07 / +05.22.09 / +05.22.11 / +05.22.12 / +05.22.13 / +05.22.20 / +% +05.23 +05.23.01 , / +05.23.02 / +05.23.03 , / +05.23.04 , / +05.23.05 / +05.23.08 / +05.23.16 / +05.23.17 / +05.23.20 / +% +05.24 +05.24.01 / +05.24.04 / / +% +05.26 +05.26.01 / +% +05.27 +05.27.01 / +05.27.02 , / +05.27.06 , / +% +05.28 +05.28.01 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +06 +% +06.01 +06.01.01 / +06.01.02 / / +06.01.03 / +06.01.04 / +06.01.05 / +06.01.06 / +06.01.07 / +06.01.08 / +06.01.09 / +06.01.10 / +06.01.11 / / +06.01.12 / +06.01.13 / +06.01.14 / +06.01.15 / +% +06.02 +06.02.01 / / +06.02.02 / +06.02.03 / +06.02.04 / +% +06.03 +06.03.01 / / +06.03.02 / +06.03.03 / / +% +06.04 +06.04.01 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +07 +07.00.01 / +07.00.02 / +07.00.03 / +07.00.04 / +07.00.05 / +07.00.06 , / +07.00.07 / +07.00.08 , , / / +07.00.09 / +07.00.10 , / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +08 +08.00.01 / +08.00.02 / +08.00.03 / +08.00.04 ( )/ +% , ( \speciality) +08.00.05 / +08.00.06 / +08.00.07 , , / +08.00.08 , / +08.00.09 , ( )/ +% , ( \speciality) +08.00.10 / +08.00.11 , 㳿 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +09 +09.00.01 , , / +09.00.02 / +09.00.03 / / +09.00.04 , / +09.00.05 / / +09.00.06 / +09.00.07 / / / +09.00.08 / / / +09.00.09 / +09.00.10 / +09.00.11 㳺/ / / +09.00.12 / / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +10 +% +10.01 +10.01.01 / +10.01.02 / +10.01.03 ' / +10.01.04 / +10.01.05 / +10.01.06 / +10.01.07 / / +10.01.08 / +10.01.09 / +10.01.10 / +% +10.02 +10.02.01 / +10.02.02 / +10.02.03 ' / +10.02.04 / +10.02.05 / +10.02.06 / +10.02.07 / +10.02.08 / +10.02.09 - / +10.02.10 - / +10.02.11 / +10.02.12 / +10.02.13 糿, , 볿/ +10.02.14 ; / +% +10.02.15 / +10.02.16 / +10.02.17 - / +10.02.21 , / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +11 +11.00.01 , / +11.00.02 / +11.00.04 / +11.00.05 / +11.00.07 , , / +11.00.08 / +11.00.09 , , / +11.00.11 / +11.00.12 / +11.00.13 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +12 +12.00.01 ; / +12.00.02 / +12.00.03 ; ; / +12.00.04 , - / +12.00.05 ; / +12.00.06 ; ; ; / +12.00.07 ; ; / +12.00.08 ; - / +12.00.09 ; / +12.00.10 ; / +12.00.11 / +12.00.12 / / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +13 +% +13.00.01 / +13.00.02 ( )/ +% : , ( \speciality) +13.00.03 / +13.00.04 / +13.00.05 / +13.00.06 / +13.00.07 / +13.00.08 / +13.00.09 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +14 +% +14.01 +14.01.01 / +14.01.02 / +14.01.03 / +14.01.04 / +14.01.05 / +14.01.06 / +14.01.07 / / +14.01.08 / / +14.01.09 / +14.01.10 / +14.01.11 / +14.01.12 / +14.01.13 / +14.01.14 / / +14.01.15 / +14.01.16 / +14.01.17 / +14.01.18 / +14.01.19 / +14.01.20 / +14.01.21 / +14.01.22 / +14.01.23 / +14.01.24 / +14.01.25 / +14.01.26 / +14.01.27 / +14.01.28 / +14.01.29 / +14.01.30 / +14.01.31 / / +14.01.32 / / +14.01.33 , / +14.01.34 / +14.01.35 / +14.01.36 / +14.01.37 / +% +14.02 +14.02.01 㳺/ / +14.02.02 / +14.02.03 / +14.02.04 / +% +14.03 +14.03.01 / / +14.03.02 / +14.03.03 / +14.03.04 / / +14.03.05 / / / +14.03.06 / / +14.03.07 / / +14.03.08 / +14.03.09 , , / +14.03.10 / / +14.03.11 / / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +15 +15.00.01 / +15.00.02 / +15.00.03 / +15.00.04 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +16 +16.00.01 / +16.00.02 , / +16.00.03 / +16.00.04 / +16.00.05 / +16.00.06 㳺 / / +16.00.07 / +16.00.08 / +16.00.09 - / +16.00.10 / / +16.00.11 , / / +16.00.12 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +17 +17.00.01 // / +17.00.02 / +17.00.03 / +17.00.04 ; / +% +17.00.05 / +17.00.06 / +17.00.08 ; '// +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +18 +18.00.01 , ' / +18.00.02 / +18.00.04 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +19 +19.00.01 , 㳿/ +19.00.02 / +19.00.03 ; / / +19.00.04 / / +19.00.05 ; / +19.00.06 / / +19.00.07 / +19.00.08 / +19.00.09 / +19.00.10 ; / +19.00.11 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +20 +% +20.01 - +20.01.01 / +20.01.05 / / / +20.01.07 / / +20.01.08 / / / +20.01.10 쳿/ +20.01.12 , / / +% +20.02 - +20.02.04 / /- / / +20.02.05 / / +20.02.11 / +20.02.12 , '/ +20.02.14 / +20.02.15 , / +20.02.20 / /- +20.02.22 / / +20.02.23 / / / / / / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +21 +% +21.01 +21.01.01 / / +% +21.02 +21.02.01 / / +21.02.02 / / +21.02.03 / / / / / / +% +21.03 +21.03.01 / / +21.03.02 / +21.03.03 / / +% +21.04 +21.04.01 / / +21.04.02 ' / +% +21.05 +21.05.01 / +% +21.06 +21.06.01 / / / / +21.06.02 / +% +21.07 +21.07.01 / / +21.07.02 /- / / / / / / +21.07.03 / / / +21.07.04 - / / +21.07.05 - / / / / +% +21.08 +21.08.01 / / / / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +22 +22.00.01 㳿/ +22.00.02 / +22.00.03 / +22.00.04 㳿/ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +23 +23.00.01 / / +23.00.02 / / +23.00.03 / +23.00.04 / +23.00.05 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +24 +24.00.01 / +24.00.02 , / +24.00.03 / +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +25 +25.00.01 / +25.00.02 / +25.00.03 / +25.00.04 / +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 LlyWa#yZ65UC=*;9 literal 0 HcmV?d00001 diff --git a/papers/images/2-3-max-consistent-partitions.png b/papers/images/2-3-max-consistent-partitions.png new file mode 100644 index 0000000000000000000000000000000000000000..02593b0ac14f15abb6f8187b38eb7b99aca3f9bc GIT binary patch literal 23714 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 literal 0 HcmV?d00001 diff --git a/results/(1, 2, 2)-max-consistent-partitions-probability-5-nodes-bbc08cc6dbf247c585b7bf281bb93b59.png b/results/(1, 2, 2)-max-consistent-partitions-probability-5-nodes-bbc08cc6dbf247c585b7bf281bb93b59.png new file mode 100644 index 0000000000000000000000000000000000000000..18b5a231912834799d342351f5b90782739d2057 GIT binary patch literal 22578 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 EPbSxo-v9sr literal 0 HcmV?d00001 diff --git a/results/(1, 4)-max-consistent-partitions-probability-5-nodes-a225effe3dc44f12b4ab06b444908280.png b/results/(1, 4)-max-consistent-partitions-probability-5-nodes-a225effe3dc44f12b4ab06b444908280.png new file mode 100644 index 0000000000000000000000000000000000000000..78fdd080867a42463e6b1cc12c15c5341f321fad GIT binary patch literal 24482 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 literal 0 HcmV?d00001 diff --git a/results/(2, 3)-max-consistent-partitions-probability-5-nodes-ed1f00b801bd42c8a7ccc5330ad1c19a.png b/results/(2, 3)-max-consistent-partitions-probability-5-nodes-ed1f00b801bd42c8a7ccc5330ad1c19a.png new file mode 100644 index 0000000000000000000000000000000000000000..02593b0ac14f15abb6f8187b38eb7b99aca3f9bc GIT binary patch literal 23714 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