diff options
Diffstat (limited to 'semestre 3')
15 files changed, 1026 insertions, 9 deletions
diff --git a/semestre 3/architecture des ordinateurs/3- Réalisation physique d'un ordinateur.md b/semestre 3/architecture des ordinateurs/3- Réalisation physique d'un ordinateur.md index 16fbc94..00d81f0 100644 --- a/semestre 3/architecture des ordinateurs/3- Réalisation physique d'un ordinateur.md +++ b/semestre 3/architecture des ordinateurs/3- Réalisation physique d'un ordinateur.md @@ -54,4 +54,36 @@ Formellement, on a : $\text{mux2}(a,b,c) = a.\bar c+b.c$ **rattraper fin cours sur les circuits logiques** Décodeur converti une entrée $n$ bits en sortie $p$ bits -|> permet de déterminer les adresses, les champs suivants...
\ No newline at end of file +|> permet de déterminer les adresses, les champs suivants... + +**Rattraper sur les autres classes de fonction** + +Horloge est la référence temporelle permettant d'ordonner les choses +|> signal qui oscille -> passe de 0 à 1 à 0 d'une manière continue en suivant des caractéristiques bien définies +|> permet d'exécuter des instructions en même temps ou à des instants différents +|> cycle est tout ce qui se passe entre deux fronts montant (i.e. contient un 1 et un 0) +|> 98% des circuits numériques sont synchrones (i.e. utilisent au moins une horloge) +-> comment faire en sorte que le signal soit assez fort partout ? +|> besoin d'avoir un temps de setup (temps que le front monte) faible et un hold plus long (temps que le front reste) + +Les éléments avec boucle sont soit stabilisant, soit oscillant +|> on utilise les éléments avec boucle qui sont stabilisants pour mémoriser +-> structures stables changent d'état en fonction d'une entrée +|> structure bistable est une boucle avec deux inverseurs + +Éléments mémorisant seront dans une zone appelée "bascules" +|> contiennent les éléments bistables qui est commandable + +**voir les diapo pour les éléments à bascule** + +Les registres dans le processeur sont représentés par des bancs +|> est un ensemble de bascule D (avec en plus une commande d'écriture) de 1 bits +|> besoin d'être sur la même horloge et avec la même commande d'écriture + +**voir le diapo pour le schéma** + +Comment on met les bonnes commandes au bon moment ? +|> possible grâce à un automate -> est la partie contrôle +(avant, on était dans la partie donnée) + +**voir le diapo pour la liste des transferts élémentaires et le déroulement de la lecture d'un programme** diff --git a/semestre 3/architecture des ordinateurs/td/25-11-26.md b/semestre 3/architecture des ordinateurs/td/25-11-26.md new file mode 100644 index 0000000..e72f90a --- /dev/null +++ b/semestre 3/architecture des ordinateurs/td/25-11-26.md @@ -0,0 +1,105 @@ +--- +tags: + - sorbonne + - in0ormatique + - architecture-des-ordinateurs + - td +semestre: 3 +--- +TME sont encore moins bons que les partiels +|> rendu semaine prochaine + +--- + +| $a$ | $b$ | $c$ | $\bar b.a.c$ | $s$ | +| --- | --- | --- | ------------ | --- | +| 1 | 1 | 1 | 0 | 1 | +| 1 | 1 | 0 | 0 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 1 | 0 | 0 | 0 | 0 | +| 0 | 1 | 1 | 0 | 1 | +| 0 | 1 | 0 | 0 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 0 | 0 | 0 | 0 | 0 | +$b+\bar b.a.c = (b+\bar b).(b+a.c) = b+a.c$ + +$(\bar a.\bar b.\bar c)+(\bar a.b.\bar c)+(\bar a.b.c)+(a.b.c)$ + +| $a$ | $b$ | $c$ | $b+a.c$ | $(a+b).(a+c)$ | +| --- | --- | --- | ------- | ------------- | +| 0 | 0 | 0 | 0 | 0 | +| 0 | 0 | 1 | 0 | 0 | +| 0 | 1 | 0 | 0 | 0 | +| 0 | 1 | 1 | 1 | 1 | +| 1 | 0 | 0 | 0 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 1 | 1 | 0 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | + +| $a$ | $b$ | $\mathrm{xor}(a,b)$ | +| --- | --- | ------------------- | +| 0 | 0 | 0 | +| 0 | 1 | 1 | +| 1 | 0 | 1 | +| 1 | 1 | 0 | +$(\bar a.b)+(a.\bar b)$ + +$\mathrm{mux2}(a,b,c) = a.\bar c+b.c$ + +| $a$ | $b$ | $c$ | $\mathrm{mux2}(a,b,c)$ | +| --- | --- | --- | ---------------------- | +| 0 | 0 | 0 | 0 | +| 0 | 0 | 1 | 0 | +| 0 | 1 | 0 | 0 | +| 0 | 1 | 1 | 1 | +| 1 | 0 | 0 | 1 | +| 1 | 0 | 1 | 0 | +| 1 | 1 | 0 | 1 | +| 1 | 1 | 1 | 1 | +$(\bar a.b.c)+(a.\bar b.\bar c)+(a.b.\bar c)+(a.b.c)$ + +3 entrées ($u_1$ et $u_2$, $c_{in}$) +2 sorties ($s$, $c_{out}$) + +| $u_1$ | $u_2$ | $c_{in}$ | $s$ | $c_{out}$ | +| ----- | ----- | -------- | --- | --------- | +| 0 | 0 | 0 | 0 | 0 | +| 0 | 0 | 1 | 1 | 0 | +| 0 | 1 | 0 | 1 | 0 | +| 0 | 1 | 1 | 0 | 1 | +| 1 | 0 | 0 | 1 | 0 | +| 1 | 0 | 1 | 0 | 1 | +| 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 0 | 0 | 1 | +$s=(\bar u_1.\bar u_2.c_{in})+(\bar u_1.u_2.\bar c_{in})+(u_1.\bar u_2.\bar c_{in})+(u_1.u_2.c_{in})=u_1\oplus u_2\oplus c_{in}$ où $\oplus$ est $\mathrm{xor}$ (à refaire) +$c_{out}=(\bar u_1.u_2.c_{in})+(u_1.\bar u_2.c_{in})+(u_1.u_2.c_{in})+(u_1.u_2.\bar c_{in})=a.b+a.c_{in}+b.c_{in}=c_{in}.(a\oplus b)+a.b$ (à refaire) +| $i_3$ | $i_2$ | $i_1$ | $i_0$ | $a$ | $b$ | $c$ | $d$ | $e$ | $f$ | $g$ | +| ----- | ----- | ----- | ----- | --- | --- | --- | --- | --- | --- | --- | +| 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | | +| 0 | 0 | 0 | 1 | | 1 | 1 | | | | | +| 0 | 0 | 1 | 0 | 1 | 1 | | 1 | 1 | | 1 | +| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | | | 1 | +| 0 | 1 | 0 | 0 | | 1 | 1 | | | 1 | 1 | +| 0 | 1 | 0 | 1 | 1 | | 1 | 1 | | 1 | 1 | +| 0 | 1 | 1 | 0 | | | 1 | 1 | 1 | 1 | 1 | +| 0 | 1 | 1 | 1 | 1 | 1 | 1 | | | | | +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | +$b=\overline{\bar i_3.i_2.\bar i_1.i_0}.\overline{\bar i_3.i_2.i_1.\bar i_0} = i_3+\bar a_2+\overline{a_1\oplus a_0}$ (à refaire) +$c=\overline{\bar i_3.\bar i_2.i_1.\bar i_0}$ + +$C_{out,n-1} \neq C_{out,n-2}$ + +| $C_{out,n-1}$ | $C_{out,n-2}$ | v | +| ------------- | ------------- | --- | +| 0 | 0 | 0 | +| 0 | 1 | 1 | +| 1 | 0 | 1 | +| 1 | 1 | 0 | + +| $v$ | $i$ | $r$ | +| --- | --- | --- | +| 0 | 0 | 0 | +| 0 | 1 | 1 | +| 1 | 0 | 1 | +| 1 | 1 | 0 | diff --git a/semestre 3/architecture des ordinateurs/tme/tme8/tme.circ b/semestre 3/architecture des ordinateurs/tme/tme8/tme.circ new file mode 100644 index 0000000..5b005ee --- /dev/null +++ b/semestre 3/architecture des ordinateurs/tme/tme8/tme.circ @@ -0,0 +1,516 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<project source="4.0.0" version="1.0"> + This file is intended to be loaded by Logisim-evolution v4.0.0(https://github.com/logisim-evolution/). + + <lib desc="#Wiring" name="0"> + <tool name="Pin"> + <a name="appearance" val="classic"/> + </tool> + </lib> + <lib desc="#Gates" name="1"/> + <lib desc="#Plexers" name="2"/> + <lib desc="#Arithmetic" name="3"/> + <lib desc="#Memory" name="4"/> + <lib desc="#I/O" name="5"/> + <lib desc="#TTL" name="6"/> + <lib desc="#TCL" name="7"/> + <lib desc="#Base" name="8"/> + <lib desc="#BFH-Praktika" name="9"/> + <lib desc="#Input/Output-Extra" name="10"/> + <lib desc="#Soc" name="11"/> + <main name="main"/> + <options> + <a name="gateUndefined" val="ignore"/> + <a name="simlimit" val="1000"/> + <a name="simrand" val="0"/> + </options> + <mappings> + <tool lib="8" map="Button2" name="Poke Tool"/> + <tool lib="8" map="Button3" name="Menu Tool"/> + <tool lib="8" map="Ctrl Button1" name="Menu Tool"/> + </mappings> + <toolbar> + <tool lib="8" name="Poke Tool"/> + <tool lib="8" name="Edit Tool"/> + <tool lib="8" name="Wiring Tool"/> + <tool lib="8" name="Text Tool"/> + <sep/> + <tool lib="0" name="Pin"/> + <tool lib="0" name="Pin"> + <a name="facing" val="west"/> + <a name="type" val="output"/> + </tool> + <sep/> + <tool lib="1" name="NOT Gate"/> + <tool lib="1" name="AND Gate"/> + <tool lib="1" name="OR Gate"/> + <tool lib="1" name="XOR Gate"/> + <tool lib="1" name="NAND Gate"/> + <tool lib="1" name="NOR Gate"/> + <sep/> + <tool lib="4" name="D Flip-Flop"/> + <tool lib="4" name="Register"/> + </toolbar> + <circuit name="main"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="main"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + <comp lib="0" loc="(260,480)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="b"/> + </comp> + <comp lib="0" loc="(270,340)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a"/> + </comp> + <comp lib="0" loc="(650,400)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="type" val="output"/> + </comp> + <comp lib="1" loc="(340,480)" name="NOT Gate"/> + <comp lib="1" loc="(350,330)" name="NOT Gate"/> + <comp lib="1" loc="(410,350)" name="AND Gate"/> + <comp lib="1" loc="(410,460)" name="AND Gate"/> + <comp lib="1" loc="(550,400)" name="OR Gate"/> + <comp lib="8" loc="(510,310)" name="Text"> + <a name="text" val="mon_xor"/> + </comp> + <wire from="(260,480)" to="(290,480)"/> + <wire from="(270,340)" to="(280,340)"/> + <wire from="(280,340)" to="(280,440)"/> + <wire from="(280,340)" to="(320,340)"/> + <wire from="(280,440)" to="(360,440)"/> + <wire from="(290,370)" to="(290,480)"/> + <wire from="(290,370)" to="(360,370)"/> + <wire from="(290,480)" to="(310,480)"/> + <wire from="(320,330)" to="(320,340)"/> + <wire from="(340,480)" to="(360,480)"/> + <wire from="(350,330)" to="(360,330)"/> + <wire from="(410,350)" to="(500,350)"/> + <wire from="(410,420)" to="(410,460)"/> + <wire from="(410,420)" to="(500,420)"/> + <wire from="(500,350)" to="(500,380)"/> + <wire from="(550,400)" to="(650,400)"/> + </circuit> + <circuit name="mux2"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="mux2"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + <comp lib="0" loc="(250,80)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="south"/> + <a name="label" val="i"/> + </comp> + <comp lib="0" loc="(460,250)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(90,200)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a"/> + </comp> + <comp lib="0" loc="(90,310)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="b"/> + </comp> + <comp lib="1" loc="(150,160)" name="NOT Gate"/> + <comp lib="1" loc="(210,180)" name="AND Gate"/> + <comp lib="1" loc="(210,290)" name="AND Gate"/> + <comp lib="1" loc="(350,240)" name="OR Gate"/> + <wire from="(100,120)" to="(100,160)"/> + <wire from="(100,120)" to="(250,120)"/> + <wire from="(100,160)" to="(100,270)"/> + <wire from="(100,160)" to="(120,160)"/> + <wire from="(100,270)" to="(160,270)"/> + <wire from="(150,160)" to="(160,160)"/> + <wire from="(210,180)" to="(300,180)"/> + <wire from="(210,290)" to="(300,290)"/> + <wire from="(250,80)" to="(250,120)"/> + <wire from="(300,180)" to="(300,220)"/> + <wire from="(300,260)" to="(300,290)"/> + <wire from="(350,240)" to="(460,240)"/> + <wire from="(460,240)" to="(460,250)"/> + <wire from="(90,200)" to="(160,200)"/> + <wire from="(90,310)" to="(160,310)"/> + </circuit> + <circuit name="mux4bits"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="mux4bits"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + <comp lib="0" loc="(180,230)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="i"/> + </comp> + <comp lib="0" loc="(310,560)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a3"/> + </comp> + <comp lib="0" loc="(310,580)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="b3"/> + </comp> + <comp lib="0" loc="(320,410)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a2"/> + </comp> + <comp lib="0" loc="(320,430)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="b2"/> + </comp> + <comp lib="0" loc="(330,260)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a1"/> + </comp> + <comp lib="0" loc="(340,120)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="b0"/> + </comp> + <comp lib="0" loc="(340,280)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="b1"/> + </comp> + <comp lib="0" loc="(340,70)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a0"/> + </comp> + <comp lib="0" loc="(670,210)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="s0"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(670,240)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="s1"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(670,270)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="s2"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(670,300)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="s3"/> + <a name="type" val="output"/> + </comp> + <comp loc="(530,540)" name="mux2"/> + <comp loc="(540,390)" name="mux2"/> + <comp loc="(560,240)" name="mux2"/> + <comp loc="(560,50)" name="mux2"/> + <wire from="(180,230)" to="(200,230)"/> + <wire from="(200,230)" to="(200,390)"/> + <wire from="(200,230)" to="(340,230)"/> + <wire from="(200,390)" to="(200,540)"/> + <wire from="(200,390)" to="(320,390)"/> + <wire from="(200,50)" to="(200,230)"/> + <wire from="(200,50)" to="(340,50)"/> + <wire from="(200,540)" to="(310,540)"/> + <wire from="(330,260)" to="(340,260)"/> + <wire from="(340,230)" to="(340,240)"/> + <wire from="(340,90)" to="(340,120)"/> + <wire from="(530,480)" to="(530,540)"/> + <wire from="(530,480)" to="(640,480)"/> + <wire from="(540,390)" to="(590,390)"/> + <wire from="(560,240)" to="(670,240)"/> + <wire from="(560,50)" to="(670,50)"/> + <wire from="(590,270)" to="(590,390)"/> + <wire from="(590,270)" to="(670,270)"/> + <wire from="(640,300)" to="(640,480)"/> + <wire from="(640,300)" to="(670,300)"/> + <wire from="(670,50)" to="(670,210)"/> + </circuit> + <circuit name="mux4in"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="mux4in"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + <comp lib="0" loc="(200,160)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="a"/> + </comp> + <comp lib="0" loc="(200,180)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="b"/> + </comp> + <comp lib="0" loc="(200,260)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="c"/> + </comp> + <comp lib="0" loc="(200,280)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="d"/> + </comp> + <comp lib="0" loc="(470,90)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="i1"/> + </comp> + <comp lib="0" loc="(710,190)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(80,240)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="i0"/> + </comp> + <comp loc="(420,140)" name="mux2"/> + <comp loc="(420,240)" name="mux2"/> + <comp loc="(710,190)" name="mux2"/> + <wire from="(420,140)" to="(450,140)"/> + <wire from="(420,240)" to="(490,240)"/> + <wire from="(450,140)" to="(450,210)"/> + <wire from="(450,210)" to="(490,210)"/> + <wire from="(470,190)" to="(490,190)"/> + <wire from="(470,90)" to="(470,190)"/> + <wire from="(490,230)" to="(490,240)"/> + <wire from="(80,140)" to="(200,140)"/> + <wire from="(80,140)" to="(80,240)"/> + <wire from="(80,240)" to="(200,240)"/> + </circuit> + <circuit name="add1"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="add1"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + <comp lib="0" loc="(140,200)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="A"/> + </comp> + <comp lib="0" loc="(140,260)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="B"/> + </comp> + <comp lib="0" loc="(140,340)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="Cin"/> + </comp> + <comp lib="0" loc="(410,220)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="S"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(460,110)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="Cout"/> + <a name="type" val="output"/> + </comp> + <comp lib="1" loc="(240,80)" name="AND Gate"/> + <comp lib="1" loc="(270,220)" name="XOR Gate"/> + <comp lib="1" loc="(370,140)" name="AND Gate"/> + <comp lib="1" loc="(390,320)" name="XOR Gate"/> + <comp lib="1" loc="(460,110)" name="OR Gate"/> + <wire from="(140,200)" to="(210,200)"/> + <wire from="(140,260)" to="(180,260)"/> + <wire from="(140,340)" to="(310,340)"/> + <wire from="(140,60)" to="(140,200)"/> + <wire from="(140,60)" to="(190,60)"/> + <wire from="(180,100)" to="(180,240)"/> + <wire from="(180,100)" to="(190,100)"/> + <wire from="(180,240)" to="(180,260)"/> + <wire from="(180,240)" to="(210,240)"/> + <wire from="(240,80)" to="(410,80)"/> + <wire from="(270,220)" to="(280,220)"/> + <wire from="(280,120)" to="(280,220)"/> + <wire from="(280,120)" to="(320,120)"/> + <wire from="(280,220)" to="(330,220)"/> + <wire from="(310,160)" to="(310,340)"/> + <wire from="(310,160)" to="(320,160)"/> + <wire from="(310,340)" to="(330,340)"/> + <wire from="(330,220)" to="(330,300)"/> + <wire from="(370,140)" to="(410,140)"/> + <wire from="(390,220)" to="(390,320)"/> + <wire from="(390,220)" to="(410,220)"/> + <wire from="(410,130)" to="(410,140)"/> + <wire from="(410,80)" to="(410,90)"/> + </circuit> + <circuit name="add4"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="add4"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + <comp lib="0" loc="(1190,850)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="S0"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(1200,730)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="CF"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(1200,790)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="west"/> + <a name="label" val="OV"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(1220,850)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="S1"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(1250,850)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="S2"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(1280,850)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="north"/> + <a name="label" val="S3"/> + <a name="type" val="output"/> + </comp> + <comp lib="0" loc="(150,230)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="facing" val="south"/> + </comp> + <comp lib="0" loc="(60,120)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="B2"/> + </comp> + <comp lib="0" loc="(60,150)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="B3"/> + </comp> + <comp lib="0" loc="(60,60)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="B0"/> + </comp> + <comp lib="0" loc="(60,90)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="B1"/> + </comp> + <comp lib="0" loc="(70,780)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="A0"/> + </comp> + <comp lib="0" loc="(70,810)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="A1"/> + </comp> + <comp lib="0" loc="(70,840)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="A2"/> + </comp> + <comp lib="0" loc="(70,870)" name="Pin"> + <a name="appearance" val="NewPins"/> + <a name="label" val="A3"/> + </comp> + <comp lib="1" loc="(1160,790)" name="XOR Gate"/> + <comp lib="1" loc="(190,490)" name="XOR Gate"> + <a name="facing" val="south"/> + </comp> + <comp lib="1" loc="(450,360)" name="XOR Gate"/> + <comp lib="1" loc="(50,510)" name="XOR Gate"> + <a name="facing" val="south"/> + </comp> + <comp lib="1" loc="(820,440)" name="XOR Gate"/> + <comp loc="(1260,580)" name="add1"/> + <comp loc="(400,700)" name="add1"/> + <comp loc="(680,660)" name="add1"/> + <comp loc="(970,620)" name="add1"/> + <wire from="(100,270)" to="(100,740)"/> + <wire from="(100,270)" to="(150,270)"/> + <wire from="(100,60)" to="(100,230)"/> + <wire from="(100,740)" to="(180,740)"/> + <wire from="(1010,620)" to="(1010,800)"/> + <wire from="(1010,620)" to="(1040,620)"/> + <wire from="(1010,800)" to="(1090,800)"/> + <wire from="(1040,440)" to="(1040,580)"/> + <wire from="(1070,680)" to="(1070,730)"/> + <wire from="(1070,680)" to="(1290,680)"/> + <wire from="(1070,730)" to="(1070,770)"/> + <wire from="(1070,730)" to="(1200,730)"/> + <wire from="(1070,770)" to="(1100,770)"/> + <wire from="(1090,800)" to="(1090,810)"/> + <wire from="(1090,810)" to="(1100,810)"/> + <wire from="(1160,790)" to="(1200,790)"/> + <wire from="(1220,830)" to="(1220,850)"/> + <wire from="(1250,820)" to="(1250,850)"/> + <wire from="(1260,580)" to="(1290,580)"/> + <wire from="(1260,600)" to="(1280,600)"/> + <wire from="(1280,600)" to="(1280,850)"/> + <wire from="(1290,580)" to="(1290,680)"/> + <wire from="(150,230)" to="(150,240)"/> + <wire from="(150,240)" to="(150,270)"/> + <wire from="(150,240)" to="(320,240)"/> + <wire from="(150,270)" to="(170,270)"/> + <wire from="(170,270)" to="(170,430)"/> + <wire from="(170,430)" to="(180,430)"/> + <wire from="(180,690)" to="(180,700)"/> + <wire from="(190,490)" to="(190,660)"/> + <wire from="(190,660)" to="(460,660)"/> + <wire from="(210,90)" to="(210,430)"/> + <wire from="(30,230)" to="(100,230)"/> + <wire from="(30,230)" to="(30,450)"/> + <wire from="(30,450)" to="(40,450)"/> + <wire from="(320,240)" to="(320,380)"/> + <wire from="(320,240)" to="(600,240)"/> + <wire from="(320,380)" to="(390,380)"/> + <wire from="(380,120)" to="(380,340)"/> + <wire from="(380,340)" to="(390,340)"/> + <wire from="(400,700)" to="(460,700)"/> + <wire from="(400,720)" to="(400,850)"/> + <wire from="(400,850)" to="(1190,850)"/> + <wire from="(430,680)" to="(430,810)"/> + <wire from="(430,680)" to="(460,680)"/> + <wire from="(450,360)" to="(550,360)"/> + <wire from="(50,510)" to="(50,690)"/> + <wire from="(50,690)" to="(180,690)"/> + <wire from="(550,360)" to="(550,580)"/> + <wire from="(550,580)" to="(750,580)"/> + <wire from="(60,120)" to="(380,120)"/> + <wire from="(60,150)" to="(760,150)"/> + <wire from="(60,60)" to="(100,60)"/> + <wire from="(60,90)" to="(210,90)"/> + <wire from="(600,240)" to="(600,460)"/> + <wire from="(600,460)" to="(760,460)"/> + <wire from="(680,660)" to="(750,660)"/> + <wire from="(680,680)" to="(750,680)"/> + <wire from="(70,270)" to="(100,270)"/> + <wire from="(70,270)" to="(70,450)"/> + <wire from="(70,780)" to="(80,780)"/> + <wire from="(70,810)" to="(430,810)"/> + <wire from="(70,840)" to="(720,840)"/> + <wire from="(70,870)" to="(990,870)"/> + <wire from="(720,640)" to="(720,840)"/> + <wire from="(720,640)" to="(750,640)"/> + <wire from="(750,580)" to="(750,620)"/> + <wire from="(750,680)" to="(750,830)"/> + <wire from="(750,830)" to="(1220,830)"/> + <wire from="(760,150)" to="(760,420)"/> + <wire from="(80,720)" to="(180,720)"/> + <wire from="(80,720)" to="(80,780)"/> + <wire from="(820,440)" to="(1040,440)"/> + <wire from="(970,620)" to="(1010,620)"/> + <wire from="(970,640)" to="(970,820)"/> + <wire from="(970,820)" to="(1250,820)"/> + <wire from="(990,600)" to="(1040,600)"/> + <wire from="(990,600)" to="(990,870)"/> + </circuit> + <circuit name="oppose4"> + <a name="appearance" val="logisim_evolution"/> + <a name="circuit" val="oppose4"/> + <a name="circuitnamedboxfixedsize" val="true"/> + <a name="simulationFrequency" val="1.0"/> + </circuit> +</project> diff --git a/semestre 3/histoire philosophie médiévale/3- Mutations des XIIe et XIIIe siècles et l'approche médiévale du scepticisme.md b/semestre 3/histoire philosophie médiévale/3- Mutations des XIIe et XIIIe siècles et l'approche médiévale du scepticisme.md index 89c0d29..5dd65d2 100644 --- a/semestre 3/histoire philosophie médiévale/3- Mutations des XIIe et XIIIe siècles et l'approche médiévale du scepticisme.md +++ b/semestre 3/histoire philosophie médiévale/3- Mutations des XIIe et XIIIe siècles et l'approche médiévale du scepticisme.md @@ -158,4 +158,47 @@ Question d'Adam (lors de la Genèse) touche l'esprit humain dans son fonctionnem |> pour certains, Adam n'est pas tombé dans la faux, mais il a possiblement fait des opinions fausses |> Thomas est contre (besoin de corriger le texte qui en parle) : il affirme que l'esprit humain est fondamentalement fait pour la vérité et est capable de l'atteindre -> impossible de faire des conjectures (et donc d'avoir des opinions fausses) |> la créature peut ne pas avoir tous les biens, mais cela ne veut pas dire qu'elle possède une version fausse (corruption par la fausseté) ! -|> ne possède donc aucune opinion, juste des vérités
\ No newline at end of file +|> ne possède donc aucune opinion, juste des vérités +## Théorie de l'illumination de Bonaventure +Souhaite maintenir la possibilité du savoir via l'illumination +|> s'oppose à Duns Scot qui explique qu'il y a des fondements de la connaissance résistant au doute sceptique +|> ressemble à Henri de Gand (est plus complexe et plus précise) + +Renouveau au XVIIIe siècle +|> devient une théorie élaborée +|> cherche à palier les théories aristotéliciennes de la connaissance +|> est vue comme un complément à Aristote + +Source importante = Avicenne +|> notamment _Le Livre de l'âme_ +Augustin est aussi très utilisé + +Bonaventure, « Itinéraire de l'esprit vers Dieu » +|> ressemble beaucoup à Augustin +|> hérité de Platon et du néo-platonisme + +Bonaventure, _Questions disputées sur le savoir du Christ_ +|> conception intellectuelle sur la certitude, d'où vient-elle ? +|> les raisons éternelles (les idées des choses) sont présentes dans l'essence divine -> forme d'unité, pas de multiplicité +|> stabilité provient d'un savoir nécessaire +-> tension *a priori* entre la mutabilité du sensible et les exigences du savoir +|> théorie de l'illumination cherche à résoudre ça +|> nous obtenons la certitude grâce aux raisons éternelles des choses +|> raisons orientent fondamentalement notre connaissance +|> lumière divine collabore avec notre raison créée +-> imperfection de notre propre connaissance, besoin d'un Dieu + +Les signes ne contiennent pas en eux-mêmes les significations (Augustin) +|> comment peut-on apprendre via les mots ? +|> soit l'élève ne connait pas les mots et ne peut pas apprendre, soit il les connait déjà et il n'apprend pas +|> le maître attire l'élève vers des mots qu'il connait uniquement intérieurement (via la Christ) +-> universalité des connaissances provient de cette raison commune + +La théorie de l'illumination a besoin de séparer notre connaissance actuelle et notre connaissance parfaite (voir le texte page 112, qlq chose comme ça) +|> conception radicale (toute vraie connaissance est intelligible par l'intelligible) pourrait construire le scepticisme +|> ne prend pas en compte les conditions d'exercice de notre connaissance (déception par rapport à ce qu'on connait actuellement) +|> mais n'est pas une simple médiation -> simplifie trop et impossible de définir (grâce spéciale, vision sincère de nos mécanismes ne provenant plus de Dieu...) +|> besoin de voir l'illumination comme une raison éternelle divine +-> principe régulateur et moteur pour notre raison humaine +|> n'est pas une intervention directe +|> est une présence de Dieu dans la raison
\ No newline at end of file diff --git a/semestre 3/histoire philosophie médiévale/td/5-.md b/semestre 3/histoire philosophie médiévale/td/5-.md index 32b4626..2b2cfa1 100644 --- a/semestre 3/histoire philosophie médiévale/td/5-.md +++ b/semestre 3/histoire philosophie médiévale/td/5-.md @@ -37,6 +37,10 @@ Donc deux connaissances possibles 1. plus général 2. indéterminé 3. déterminé -> connais l'essentielle -4. la chose connue existante -> connais l'existencielle (???) +4. la chose connue existante -> connais l'existentielle -Le passage de la 2 à la 3 est l'illumination divine pour Henri de Gand
\ No newline at end of file +Le passage de la 2 à la 3 est l'illumination divine pour Henri de Gand + +Platon, _Timée_ -> construction d'une cosmologie cohérente +|> fondée sur les axiomes de la raison +|> cosmologie doit résoudre un pb difficile reposant sur le changement incessant
\ No newline at end of file diff --git a/semestre 3/logique et notions formelles/8- Ensemble 1.md b/semestre 3/logique et notions formelles/8- Ensemble 1.md new file mode 100644 index 0000000..953d4dc --- /dev/null +++ b/semestre 3/logique et notions formelles/8- Ensemble 1.md @@ -0,0 +1,8 @@ +--- +tags: + - sorbonne + - philosophie + - logique-notions-formelles +semestre: 3 +--- +...
\ No newline at end of file diff --git a/semestre 3/logique et notions formelles/9- Ensemble 2.md b/semestre 3/logique et notions formelles/9- Ensemble 2.md new file mode 100644 index 0000000..e122645 --- /dev/null +++ b/semestre 3/logique et notions formelles/9- Ensemble 2.md @@ -0,0 +1,12 @@ +--- +tags: + - sorbonne + - philosophie + - logique-notions-formelles +semestre: 3 +--- +Exemple d'ensembles infinis : +- nombres naturels ($\mathbb N$) +- points entre Paris et Besançon + +(C'est en fait un cours de maths simplifié)
\ No newline at end of file diff --git a/semestre 3/logique et notions formelles/td/25-11-24.md b/semestre 3/logique et notions formelles/td/25-11-24.md new file mode 100644 index 0000000..fe2bea6 --- /dev/null +++ b/semestre 3/logique et notions formelles/td/25-11-24.md @@ -0,0 +1,30 @@ +--- +tags: + - sorbonne + - philosophie + - logique-notions-formelles + - td +semestre: 3 +--- +Pour montrer qu'un arg est valide, besoin de montrer que si une conséquence est fausse, alors au moins une prémisse est fausse + +$\models (P\land Q)\rightarrow P \equiv (\lnot P\lor\lnot Q)\land P$, ce qui est tout le temps vrai +-> vrai + +Si $Q$ est faux, alors c'est vrai (car le faux implique tout) +Si $Q$ est vrai, alors $P\rightarrow Q\equiv \lnot P\lor Q$ est vrai +-> vrai + +$(P\lor Q)\rightarrow R$ +Supposons $\bar d(P)=V$, donc $\bar d(R)=V$ (par hypothèse) +|> $\bar d(P\rightarrow R) = V$ +Supposons $\bar d(Q) = V$, donc $\bar d(R) = V$ (par hypothèse) +|> $\bar d(P \rightarrow R)$ ne peut pas être déterminé sans hypothèse supplémentaire +-> faux + +Supposons $P$ est vraie, donc $R$ est vraie (par hypothèse) +|> $P\rightarrow R$ est donc vraie +Supposons $Q$, donc $R$ est vraie (par hypothèse) +|> $Q\rightarrow R$ est donc vraie +Si ni $Q$, ni $P$ sont vraies, alors l'hypothèse est fausse. +-> vrai
\ No newline at end of file diff --git a/semestre 3/philosophie politique/2- Punir.md b/semestre 3/philosophie politique/2- Punir.md index 74beb91..ba7aeeb 100644 --- a/semestre 3/philosophie politique/2- Punir.md +++ b/semestre 3/philosophie politique/2- Punir.md @@ -36,4 +36,78 @@ Pendant très longtemps, on ne punissait pas pour des raisons morales _Philosophie du Droit_, Christophe Béal, Vrin, Collection Textes clefs Si on fonde le droit de punir sur une infinité, il sera aussi infini, Montesquieu, _Esprit des Lois_ -|> explique pourquoi fonder le droit de punir sur un dieu implique toujours une disproportion
\ No newline at end of file +|> explique pourquoi fonder le droit de punir sur un dieu implique toujours une disproportion + +Conséquentialisme = justifie la peine par ses bonnes conséquences (*forward looking*) +|> utilitarisme = cherche à maximiser le bonheur du plus grand nombre +-> Beccaria (_Des délits et des peines_), Bentham (_Rationale of Judicial Evidence, Specially Applied to English Practice_), Platon (_Protagoras_) +|> pour Beccaria, on a besoin d'une proportion, sinon on ne limite pas du les crimes très dangereux (voir aussi Montesquieu, _Esprit des lois_) + +Rétributivisme = justifie la peine par la commission de la peine (*backward looking*) +-> Kant (_Doctrine du droit_), Hegel (_Principes de la philosophie du droit_) +|> pour Kant, on ne doit pas traiter le criminel comme un moyen +|> pour Hegel, ne pas punir le criminel, c'est dénier son statut d'être raisonnable ayant choisi de commettre le mal -> permet de reconnaître son statut de personne (le conséquentialisme fonctionne sur la modalité de la punition) + +> [!info] _The Stanford Encyclopedia of Philosophy_ est très bien +### Rétributivisme +Walen, _The Stanford Encyclopedia of Philosophy_, « Retributive Justice » +>Le mérite a été analysé comme une relation à trois termes entre la personne qui mérite quelque chose, ce qu'elle mérite et ce en vertu de quoi elle le mérite. Ceux-ci peuvent être utilement désignés, respectivement, comme le sujet du mérite, l'objet du mérite et la base du mérite. (Feinberg 1970 ; Berman 2011 : 437) + +Rétributivisme est lié à une forme de mérite +|> quand on vole, on crée une injustice : nous ne méritons pas ça (Morris, _Monist_, « Persons and Punishment ») +-> problèmes : +- besoin de croire que la distribution initiale est juste +- difficile de déterminer le quantum de la peine + +Objection général au rétributivisme, Murphy, _Criminal Law and Philosophy_, « Legal Moralism and Retribution Revisited » (Murphy était rétributiviste) +>Mon enthousiasme pour régler mes comptes et rétablir l'équilibre par le biais d'une justice rétributive était peut-être en partie le prolongement de ce que Nietzsche appelait « une âme qui cligne de l’œil » : l'âme d'un commerçant ou d'un comptable. Si j'avais été une personne plus gentille, moins colérique, plus généreuse et plus noble d'esprit, aurais-je été autant séduit par le rétributivisme que je l'ai été à une époque ? Je ne pense pas. + +La peine permet aussi d'exprimer l'importance du mal (distinction entre taxe et amende) +|> permet de reconnaître l'importance des droits violés +|> permet de traiter le délinquant comme un agent moral +### Conséquentialisme +Conséquentialisme peut viser à +- dissuader +- incapacité +- réhabiliter +- renforcer les valeurs sociales + +Mais quelles conséquences prendre en compte ? +- réelles : qu'est-ce qui marche vraiment ? -> pb du *moral luck* +- anticipées : éviter les conséquences futures -> et l'ignorance ? +- anticipable : éviter les conséquences futures que l'agent aurait dû anticiper -> comment délimiter ce que l'agent aurait dû anticiper + +Objection de la maximisation des bonnes conséquences +|> punir le coupable n'est pas si important que ça tant qu'on prétend punir le coupable +|> recherche du coupable ne devient plus crucial + +Utilitarisme de la règle = réfléchir sur la règle visant à maximiser les bonnes conséquences +Utilitarisme de l'acte = réfléchir pour chaque acte pour maximiser les bonnes conséquences +-> le mode de réflexion change grandement notre pov moral + +Hart, _Punishment and Responsibility_ +|> réponse conséquentialiste pour « pourquoi faut-il punir ? » +|> réponse rétributiviste pour la distribution de la peine + + +![[Pasted image 20251127120330.png]] +## B. Quoi punir ? +Paternalisme = interférence avec la liberté d'action d'une personne se référant exclusivement pour des valeurs bonnes pour la personne concernée (définition de G. Dworkin) +|> aucune loi n'est paternaliste en soi +|> une loi est paternaliste quand elle vise à protéger les personnes qu'elle contraint + +John Stuart Mill, _De la liberté_ +|> Mill est un utilitariste libéral héritier de Bentham +|> le principe de non-nuisance, le *harm principle* +>La seule raison légitime que puisse avoir une communauté pour user de force contre un de ses membres, est de l’empêcher de nuire aux autres. [...] Sur lui-même, sur son corps et sur son esprit, l’individu est souverain. + +Principe applicable pour Mill +>Il convient de le dire, je néglige tout avantage que je pourrais tirer pour mon argumentation, de l’idée du droit abstrait comme chose indépendante de l’utilité. L’utilité est la solution suprême de toute question morale ; mais ce doit être l’utilité dans le sens le plus étendu du mot, l’utilité fondée sur les intérêts permanents de l’homme, comme être progressif. + +Construction du marché des idées (*market place of ideas*) pour justifier la liberté d'expression +|> le vrai émerge toujours du faux +|> permet aussi d'éviter de créer un dogme vrai -> on doit croire aux choses vraies pour des bonnes raisons +-> les mêmes raisons pour le principe de non-nuisance +## C. Comment punir ? +## D. Qui punir ? +Pour être punissable, faut-il avoir agi librement ?
\ No newline at end of file diff --git a/semestre 3/structures des données/9- Arbre rouge-noir.md b/semestre 3/structures des données/9- Arbre rouge-noir.md new file mode 100644 index 0000000..621b21e --- /dev/null +++ b/semestre 3/structures des données/9- Arbre rouge-noir.md @@ -0,0 +1,24 @@ +--- +tags: + - sorbonne + - informatique + - structure-des-données +semestre: 3 +--- + +Problème de l'AVL +|> besoin de faire des rotations, ce qui transforme tout le graphe +|> concurrence impossible, change beaucoup en mémoire -> est très morcelé (donc défaut de page) +## Arbre rouge-noir +-> ici, on s'occupe de la fragmentation mémoire + +Arbre rouge-noir +|> AVL demandant moins de rotations +|> racine est noire +|> fils d'un rouge est noir +**voir le diapo pour les autres specs** + +Problème de ces arbres +|> beaucoup de cas à gérer +## Skip lists +-> ici, on s'occupe des la concurrence
\ No newline at end of file diff --git a/semestre 3/structures des données/tme/tme6-11/00014_burma.res b/semestre 3/structures des données/tme/tme6-11/00014_burma.res new file mode 100644 index 0000000..38e25d0 --- /dev/null +++ b/semestre 3/structures des données/tme/tme6-11/00014_burma.res @@ -0,0 +1,42 @@ +NbNoeuds: 12 +NbLiaisons: 15 +NbCommodites: 8 +Gamma: 3 + +v 12 16.530000 97.380000 +v 11 25.230000 97.240000 +v 10 20.090000 94.550000 +v 9 17.200000 96.290000 +v 8 16.300000 97.380000 +v 7 21.520000 95.590000 +v 6 14.050000 98.120000 +v 5 16.470000 94.440000 +v 4 22.000000 96.050000 +v 3 22.390000 93.370000 +v 2 20.090000 92.540000 +v 1 16.470000 96.100000 + +l 8 12 +l 11 12 +l 6 11 +l 3 11 +l 1 10 +l 3 10 +l 9 10 +l 8 9 +l 3 7 +l 1 6 +l 5 6 +l 2 5 +l 3 4 +l 2 3 +l 1 2 + +k 5 11 +k 2 6 +k 11 8 +k 11 1 +k 8 3 +k 7 6 +k 4 6 +k 1 3 diff --git a/semestre 3/structures des données/tme/tme6-11/Hachage.c b/semestre 3/structures des données/tme/tme6-11/Hachage.c new file mode 100644 index 0000000..11046cf --- /dev/null +++ b/semestre 3/structures des données/tme/tme6-11/Hachage.c @@ -0,0 +1,88 @@ +#include "Hachage.h" +#include "Reseau.h" +#include <math.h> +#include <stdlib.h> + +int cle(double x, double y){ + return y + (x+y)*(x+y+1)/2; +} + +int hachage(int M, double k){ + float A = (sqrt(5)-1)/2; + return floor(M*(k*A-floor(k*A))); +} + +TableHachage* initHachage(int M){ + TableHachage* hash = malloc(sizeof(TableHachage)); + hash->len = M; + hash->values = malloc(M*sizeof(CellNoeud)); + for (int i = 0; i < M; i++) hash->values[i] = NULL; + return hash; +} + +/*void freeHachage(TableHachage* hash){ + for (int i = 0; i < hash->len; i++) freeCellHash(hash->values[i]); + free(hash->values); + free(hash); +}*/ + +void insertHachage(TableHachage* H, CellNoeud* cell){ + int key = hachage(H->len, cle(cell->nd->x, cell->nd->y)); + cell->suiv = H->values[key]; + H->values[key] = cell; +} + +Noeud* rechercheCreeNoeudHachage(Reseau* R, TableHachage* H, double x, double y){ + int key = cle(x, y); + CellNoeud* val = H->values[hachage(H->len, key)]; + // je suppose que les clés sont uniques + while (val && (val->nd->x != x || val->nd->y != y)) val = val->suiv; + if (val) return val->nd; + // on a besoin de créer le nœud + Noeud* node = rechercheCreeNoeudListe(R, x, y); + CellNoeud* cell = malloc(sizeof(CellNoeud)); + cell->nd = node; + insertHachage(H, cell); + return node; +} + +Reseau* reconstitueReseauHachage(Chaines *C, int M){ + TableHachage* hash = initHachage(M); + Reseau* R = (Reseau*) malloc(sizeof(Reseau)); + CellChaine* chain = C->chaines; + while (chain){ + CellPoint* points = chain->points; + CellNoeud* before; + CellNoeud* beforeTwice; + CellCommodite* com = malloc(sizeof(CellCommodite)); + com->extrA = NULL; + while (points){ + Noeud* node = rechercheCreeNoeudHachage(R, hash, points->x, points->y); + if (!com->extrA) com->extrA = node; + // represents voisins of node + CellNoeud* cellNode = (CellNoeud*) malloc(sizeof(CellNoeud)); + cellNode->nd = node; + cellNode->suiv = NULL; + + if (beforeTwice){ + CellNoeud* cell = (CellNoeud*) malloc(sizeof(CellNoeud)); + cell->nd = node; + cell->suiv = NULL; + beforeTwice->suiv = cell; // link beforeTwice to current + before->nd->voisins = beforeTwice; // set before voisins + } + + beforeTwice = before; + before = cellNode; + if (!points->suiv) com->extrB = node; + points = points->suiv; + } + if (beforeTwice && before){ + before->nd->voisins = beforeTwice; // set before voisins + } + com->suiv = R->commodites; + R->commodites = com; + chain = chain->suiv; + } + return R; +} diff --git a/semestre 3/structures des données/tme/tme6-11/Hachage.h b/semestre 3/structures des données/tme/tme6-11/Hachage.h new file mode 100644 index 0000000..2faca4c --- /dev/null +++ b/semestre 3/structures des données/tme/tme6-11/Hachage.h @@ -0,0 +1,20 @@ +#ifndef HACHAGE_H +#define HACHAGE_H + +#include "Reseau.h" + +typedef struct{ + int len; + CellNoeud** values; +} TableHachage; + +int cle(double x, double y); +int hachage(int M, double k); + +Noeud* rechercheCreeNoeudHachage(Reseau* R, TableHachage* H, double x, double y); +TableHachage* initHachage(int M); +void freeHachage(TableHachage* hash); + +Reseau* reconstitueReseauHachage(Chaines *C, int M); + +#endif // !HACHAGE_H diff --git a/semestre 3/structures des données/tme/tme6-11/Reseau.c b/semestre 3/structures des données/tme/tme6-11/Reseau.c index cbdaa88..151bcfe 100644 --- a/semestre 3/structures des données/tme/tme6-11/Reseau.c +++ b/semestre 3/structures des données/tme/tme6-11/Reseau.c @@ -27,8 +27,11 @@ Reseau* reconstitueReseauListe(Chaines *C){ CellPoint* points = chain->points; CellNoeud* before; CellNoeud* beforeTwice; + CellCommodite* com = malloc(sizeof(CellCommodite)); + com->extrA = NULL; while (points){ Noeud* node = rechercheCreeNoeudListe(R, points->x, points->y); + if (!com->extrA) com->extrA = node; // represents voisins of node CellNoeud* cellNode = (CellNoeud*) malloc(sizeof(CellNoeud)); cellNode->nd = node; @@ -42,12 +45,28 @@ Reseau* reconstitueReseauListe(Chaines *C){ } beforeTwice = before; before = cellNode; + if (!points->suiv) com->extrB = node; points = points->suiv; } if (beforeTwice && before){ before->nd->voisins = beforeTwice; // set before voisins } + com->suiv = R->commodites; + R->commodites = com; chain = chain->suiv; } return R; } + +int nbLiaisons(Reseau *R){ + return 0; +} + +int nbCommodites(Reseau *R){ + int i; + CellCommodite* com = R->commodites; + for (i = 0; com; i++) com = com->suiv; + return i; +} + +void afficheReseauSVG(Reseau *R, char* nomInstance); diff --git a/semestre 3/structures des données/tme/tme6-11/Reseau.h b/semestre 3/structures des données/tme/tme6-11/Reseau.h index dc618a1..dbb2d77 100644 --- a/semestre 3/structures des données/tme/tme6-11/Reseau.h +++ b/semestre 3/structures des données/tme/tme6-11/Reseau.h @@ -5,9 +5,9 @@ typedef struct noeud Noeud; /* Liste chainee de noeuds (pour la liste des noeuds du reseau ET les listes des voisins de chaque noeud) */ -typedef struct cellnoeud { - Noeud *nd; /* Pointeur vers le noeud stock\'e */ - struct cellnoeud *suiv; /* Cellule suivante dans la liste */ +typedef struct cellNoeud { + Noeud *nd; /* Pointeur vers le noeud stock\'e */ + struct cellNoeud *suiv; /* Cellule suivante dans la liste */ } CellNoeud; /* Noeud du reseau */ @@ -19,7 +19,7 @@ struct noeud{ /* Liste chainee de commodites */ typedef struct cellCommodite { - Noeud *extrA, *extrB; /* Noeuds aux extremites de la commodite */ + Noeud *extrA, *extrB; /* Noeuds aux extremites de la commodite */ struct cellCommodite *suiv; /* Cellule suivante dans la liste */ } CellCommodite; |
