# ozenati/PER_TUTTE

Ajout de quelques image et debut slide result

2 parents 8f0b9c4 + cdfae1a commit 652ae2a02fe50dcabf44ec0b4c55406f0beeb204 committed Jan 29, 2012
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
 @@ -34,16 +34,55 @@ %\caption{title} \end{center} -The results we get here is not what we expected. Despite the fact that the computation time is quite improved, the graph provided has some fixed nodes inside the grid, consequently, after the call of our implementation of the Tutte Algorithm, some edge crossing (due to those fixed nodes) appear and remove the planarity of the graph. As an explanation, we can say that by moving nodes around an internal fixed node, and in relation with the number of edges in one direction, mobile nodes tend to orient themselves to the direction of the fixed node having most of edges. With this orientation, a mobile node which is opposite to the side with a lot of edges will move to this side and create an edge-crossing. +The results we get here is not as good as we expected. Although the +computation time is quite improved, the produced graph is not planar. The +reason is because the graph provided has some fixed nodes inside the +grid. Consequently, after the call of our implementation of the Tutte +Algorithm, some edges crossing (due to those fixed nodes) appear and remove +the planarity of the graph. + +As an explanation, we can say that by moving nodes around an internal fixed +node, and in relation with the number of edges in one side of the graph, mobile +nodes tend to orient themselves to the side of the fixed node having +most of edges (see the figure \ref{mauvais_1}). With a such graph, a +mobile node which is opposite to the side with a lot of edges will move to +this side and create an edge-crossing (see the figure \ref{mauvais_2}). + +Here are some pictures: + +% \begin{figure}[!h] +% \centering +% \includegraphics[scale=0.25]{snapshots/constate_fix_init.png} +% \caption{One initial set} +% \label{mauvais_1} +% \end{figure} + +% \begin{figure}[!h] +% \centering +% \includegraphics[scale=0.25]{snapshots/constate_probleme.png} +% \caption{The set not correctly modified(one fixed node)} +% \label{mauvais_2} +% \end{figure} -Here are some pictures to recap: + +\begin{figure}[!h] + %\begin{minipage}[!h]{.46\linewidth} + \begin{minipage}[!h]{.5\linewidth} + \centering + \includegraphics[scale=0.25]{snapshots/constate_fix_init.png} + \caption{One initial set} + \label{mauvais_1} + \end{minipage} \hfill + \begin{minipage}[!h]{.3\linewidth} + \includegraphics[scale=0.35]{snapshots/constate_probleme.png} + \caption{The set not correctly modified(one fixed node)} + \label{mauvais_2} + \end{minipage} +\end{figure} \begin{figure}[!h] \centering -\includegraphics[scale=0.5]{snapshots/constate_fix_init.png} -\caption{One initial set} -\includegraphics[scale=0.5]{snapshots/constate_nikel.png} +\includegraphics[scale=0.25]{snapshots/constate_nikel.png} \caption{The set correctly modified(all nodes mobiles)} -\includegraphics[scale=0.5]{snapshots/constate_probleme.png} -\caption{The set not correctly modified(one fixed node)} \end{figure} +
 @@ -7,8 +7,16 @@ \item in asynchronous version: each movement is applied directy after being computed \item in synchronous version: all movement are computed before being applied \end{itemize} -In the sequential version, the synchronous approach does not present benefits. It is more convenient to consider neighbors movement. -In the parallel version, the synchronous approach may be interesting in order to reduce critical sections. +In the sequential version, the synchronous approach does not present +benefits. It is more convenient to consider neighbors movement. + +In the parallel version, the synchronous approach may be interesting in +order to reduce critical sections. For the both parallel approach use the +OpenMP library. +\\ +The complexity these two algorithms is roughly $\mathit{O(\frac{n}{p})}$ +with $n = |V|$ and $p$ is the number of processeurs. +\\ \subsection{Asynchronous parallel version} % in this optimization Ozenati you are suggested to talk about the @@ -17,6 +25,20 @@ \subsection{Asynchronous parallel version} \input{src/graph_coloring} \subsection{Synchronous parallel version} -% in this optimization Frozar you are suggested to talk about results with -% openMP + +The parallel synchronous version of the Tutte algorithm is easier to +implement then the parallel asynchronous. In fact, for this version, one +doesn't need to compute a coloring separation. +\\ + +During an iteration, all the nodes of the graph, instead of applying +directly the mouvement for a node, the coordinates of his image point is +saved in a table. At the end of an iteration, all upgrades are applied. In +this approach, two nodes can be computed independantly in parallel. +\\ + +So for an iteration, the set node to be visited can separate in different +subsets. Each of these subsets are independant, and so can be computed by +different threads in parallel. The separation is static, i.e. the number of +element of each subset is egal to $nb\_node / nb\_thread$.
 @@ -58,18 +58,22 @@ \section{Introduction} \input{src/introduction} \section{The context} -\input{src/context.tex} +\input{src/context} -\section{Tutte's theorem} +\section{Tutte} \input{src/tutte_cas_limite} +\section{Implementation} + +\section{Results} + \section{The Tutte parallel version} \input{src/tutte_parallel} \section{Results} \input{src/result} - \section{Conclusion} \input{src/conclusion} + \end{document}
 @@ -35,3 +35,84 @@ \vspace{1cm} } + +\frame{ + \frametitle{The context} + \framesubtitle{Compound visualization} + + \begin{columns}[!ht] + \begin{column}{4cm} + \begin{block}{} + \begin{itemize} + \item Nodes gathered into metanodes\\ + \item Inter-cluster edges merged into metaedges + \end{itemize} + \end{block} + \end{column} + \begin{column}{6cm} + \begin{figure}[H] + \centering + \includegraphics[scale=0.5]{../rapport/img/slide5.jpg} + \end{figure} + \end{column} + \end{columns} + \pause + + \begin{alertblock}{} + \centering + Impossibility for some nodes to move: + node positions bring information +\end{alertblock} + +\vspace{1cm} +} + +\frame{ + \frametitle{The context} + \framesubtitle{Edge bundling} + \begin{figure}[H] + \centering + \includegraphics[scale=0.4]{../rapport/img/slide6.jpg} + \end{figure} + +\vspace{1cm} +} + +\frame{ + \frametitle{The context} + \framesubtitle{Edge bundling} + +\begin{alertblock}{} + \centering + Impossibility for some nodes to move: + node positions bring information +\end{alertblock} +\pause +\begin{figure}[H] + \centering + \includegraphics[scale=0.2]{../rapport/img/fleche.png} + \end{figure} +\begin{center} +\begin{exampleblock}{} +\centering +Keep node position but edge aggregation +\end{exampleblock} +\end{center} +\pause + \begin{columns}[!ht] +\vspace{1cm} + \begin{column}{6cm} + \begin{block}{} + \centering + Routes edges into bundles + \end{block} + \end{column} + \begin{column}{6cm} + \begin{figure}[H] + \centering + \includegraphics[scale=0.5]{../rapport/img/slide7_2.jpg} + \end{figure} + \end{column} + \end{columns} + +}
 @@ -1,21 +1,24 @@ \frame{ - \frametitle{Tutte's theorem} + \frametitle{Tutte} +\framesubtitle{Tutte's theorem} \begin{figure}[H] \centering \includegraphics[scale=0.29]{../rapport/img/tutte.png} \end{figure} } \frame{ - \frametitle{Tutte's theorem and polygone concave face} + \frametitle{Tutte} + \framesubtitle{Tutte's theorem and polygone concave face} \begin{figure}[H] \centering \includegraphics[scale=0.29]{../rapport/img/tutte2.png} \end{figure} } \frame{ - \frametitle{Tutte's theorem and fixed vertices} + \frametitle{Tutte} +\framesubtitle{Tutte's theorem and fixed vertices} \begin{figure}[H] \centering \includegraphics[scale=0.29]{../rapport/img/tutte3.png}
 @@ -16,23 +16,20 @@ width = 0.20 # the width of the bars plt.subplot(111) -rects3 = plt.bar(ind, menMeans3, width, - color='g', - yerr=menStd3, - log='true') -#error_kw=dict(elinewidth=6, ecolor='yellow')) - -rects1 = plt.bar(ind+width, menMeans, width, - color='r', - yerr=menStd, - log='true') -# error_kw=dict(elinewidth=6, ecolor='pink')) +# rects3 = plt.bar(ind, menMeans3, width, +# color='g', +# yerr=menStd3) +# #error_kw=dict(elinewidth=6, ecolor='yellow')) + +# rects1 = plt.bar(ind+width, menMeans, width, +# color='r', +# yerr=menStd) +# # error_kw=dict(elinewidth=6, ecolor='pink')) rects2 = plt.bar(ind+2*width, menMeans2, width, color='y', - yerr=menStd2, - log='true') -#error_kw=dict(elinewidth=6, ecolor='yellow')) + yerr=menStd2) + #error_kw=dict(elinewidth=6, ecolor='yellow')) # add some plt.ylabel('Scores') @@ -45,7 +42,7 @@ 'PA' )) # plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5') ) -plt.legend( (rects1[0], rects2[0], rects3[0]), ('Aiir trafic', 'Imdb', 'Migration') ) +#plt.legend( (rects1[0], rects2[0], rects3[0]), ('Aiir trafic', 'Imdb', 'Migration') ) def autolabel(rects): # attach some text labels @@ -56,8 +53,8 @@ def autolabel(rects): plt.text(rect.get_x() + rect.get_width(), 1.05*height, '%f.4'%float(height), ha='center', va='bottom') -autolabel(rects1) -autolabel(rects2) -autolabel(rects3) +# autolabel(rects1) +# autolabel(rects2) +# autolabel(rects3) plt.show()