You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
3.4 KiB
53 lines
3.4 KiB
% Section Partie 1 - SAE 2.02
|
|
|
|
\documentclass[class=article, crop=false]{standalone}
|
|
|
|
|
|
\begin{document}
|
|
\section{Partie 1}
|
|
|
|
|
|
\subsection{Question 1}
|
|
\quad Pour représenter ce réseaux, je propose la structure de données suivante :
|
|
\lstinputlisting[language=C,firstline=8,lastline=17]{code/p1e1.c}
|
|
|
|
\par\quad La structure du point se compose de son nom et d'un tableau de pointeurs sur d'autre points. Le réseau est ainsi composé d'un tableau de pointeur sur des structures `pointsCaracteristique', elles-même pointant sur une un ou plusieurs point de la liste.
|
|
|
|
\par\quad Le réseau est caractérisé par ses points caractéristiques. Chaque point connaît les points accessibles de manière direct. Cela permet de représenter les rues et leur sens. Prenons par exemple, une rue qui part du point A et qui a pour destination le point B. Elle sera caractérisée par la présence du point B dans la liste des points accessibles du point A. De cette manière on peut facilement dessiner le réseau et calculer les trajets à suivre. En somme, les pointeurs servent à caractériser les rues et leurs sens.
|
|
|
|
|
|
\subsection{Question 2}
|
|
\par\quad Le choix d'une telle structure est fait sur la base de la simplicité d'implémentation. En effet, cette structure est relativement simple. Elle ne travaille quasiment que sur de la manipulation de pointeurs. Le parcours des points caractéristiques est donc facile.
|
|
|
|
\par\quad De plus, si on se penche sur la complexité de l'implémentation, le nombre d'opérations requise pour le parcours du réseau est proportionnel au nombre de points que l'on parcours. Au pire, tout les points seront parcouru : c'est-à-dire que la complexité maximale s'élève au nombre de point qui compose le réseaux.
|
|
|
|
|
|
\subsection{Question 3}
|
|
\par\quad Pour savoir si A est accessible directement depuis le point B, il suffit juste de regarder si B se trouve dans le tableau des points caractéristiques accessibles directment.
|
|
|
|
\par\quad Voici le code correspondant :
|
|
\lstinputlisting[language=C,firstline=21,lastline=31]{code/p1e3.c}
|
|
|
|
|
|
\subsection{Question 4}
|
|
\par\quad Pour savoir si B est accessible depuis A, directement ou non (par une ou plusieurs rues), il est possible de répéter récursivement la fonction précédante. Ainsi, elle va tester chaque point independamment et si un chemain direct est trouvé, c'est que il y à forcément un chemain qui rend B accessible.
|
|
|
|
\par\quad Voici le code correspondant :
|
|
\lstinputlisting[language=C,firstline=36,lastline=51]{code/p1e4.c}
|
|
|
|
\par\quad Voici maintenant une ébauche de travail qui visait à créé une version itérative de cette fonction :
|
|
\lstinputlisting[language=C,firstline=54,lastline=89]{code/p1e4.c}
|
|
|
|
\par\quad Je me suis rendu compte que je n'arrivait pas à pensé l'algorithme autrement que récursivement, c'est pourquoi j'ai décidé de mettre cette ébauche de côté. \\
|
|
\quad Neanmoin, il est quand même possible de réutiliser la partie de code qui teste si un point à déjà été testé. Ceci diviserait, par chaque points testé, la complexité de cette algorithme.
|
|
|
|
\par\quad Voici maintenant une ébauche de travail qui visait à créé une version itérative de cette fonction :
|
|
\lstinputlisting[language=C,firstline=91,lastline=123]{code/p1e4.c}
|
|
|
|
|
|
\subsection{Question 5}
|
|
\par\quad
|
|
|
|
|
|
|
|
\end{document} |