Nombre de Strahler
😀 On considère ici des arbres non étiquetés.
Définition du nombre de Strahler d'un arbre
Le nombre de Strahler d'un arbre indique sa complexité de branchement ; il est défini pour chacun des nœuds.
Le nombre de Strahler d'un arbre est celui de sa racine.
- Le nombre de Strahler d'une feuille est 1.
- Pour tout autre nœud, on note
i le maximum des nombres de Strahler de ses enfants (il y en a).
- S'il y a un seul enfant dont le nombre de Strahler est
i, alors le nombre de Strahler du nœud reste égal à i,
- sinon, le nombre de Strahler du nœud est égal à
i + 1.
Culture scientifique
Le paramètre « nombre de Strahler » fut introduit pour la première fois par Horton et Strahler en Hydrogéologie, pour l'étude de la forme des bassins fluviaux. Depuis il est réapparu dans l'étude des formes des structures arborescentes naturelles : arbres en botanique, éclairs en physique, molécules biologiques d'ARN, etc.
Exemple d'arbre ayant un nombre de Strahler égal à 2
graph TB
R{ } --> N1{ }
R --> N3{ }
N3 --> N4{ }
N3 --> N5{ }
N3 --> N6{ }
N4 --> N7{ }
graph TB
R(2) --> N1(1)
R --> N3(2)
N3 --> N4(1)
N3 --> N5(1)
N3 --> N6(1)
N4 --> N7(1)
Exercice
Coder une fonction nb_strahler qui prend un arbre non étiqueté en paramètre et qui renvoie un entier : le nombre de Strahler de sa racine.
Indice
Cet exercice s'apparente à une recherche de maximum, pour lequel on vérifie s'il est unique ou non. Ceci, de manière récursive.
Guide
🐍 Script Pythondef nb_strahler(arbre):
"Renvoie le nombre de Strahler de l'arbre"
enfants = arbre
if ...:
return 1
else:
n_max = ...
for sous_arbre in enfants:
n = ...
if n == n_max:
seul = False # le maximum n'est pas unique
elif n > n_max:
n_max = ...
seul = True
else:
...
if ...:
n_max += 1
return n_max
.9888.128013x/.Tr;nbOylaeu)d63m(P+02@,59fq!7K8 _o=pcwgv4F1kRIéhtsSàCji:050r0o0#0n0+0m0$0K0P0m0n0$0$0N010#0+0O010406050$0p0u0u0n0g0l040%0M0m0p100M0i0K020n0u0O0h0K0X0o1a0g0F0p0o0$050d17191b1d150O04051I1B1L0d1I150r0+0S0^0`0|0~0!0+0R0!0m1Z0!0#13050:0j0m0o1U0{0}011Y1!1$1!0#1,1.1*0#0g1J0#0!1:1W010E0=0o0i1o0o010^1g0$0O0n0i0~0z1*2g2i241=271.2a0u2c040b0K0w0g0M0O0M0$0+1j1l0.2e0g0g0o0P2G1B2n0i1J0d222S1 21201+0r2p0~1$0i292D1*1R1T0_1;2$0+2(0i0M2,1*0O2L1J2Q2S2}162h1l2.252?0g1a0m130K0V2P3114302o331=3537390z3c2i3e2Q2#013j0n38040K0t3n2R153q3h0~3t3v0K0T3z3p313r3F390C3J3B3L3D3s0M363u390s3Q3f321V3i3V3k3w0H3!3C3%3E3)3X3w0J3-3S3/3U3W3G0D3^3g3`3N040V0y3 3$2/3{3*0V3b1C3d3R4048420V3m4d3o4f47343;3v0V3y4l3A3#3M4q130V3I4u3K4g4p3|4z3P4C4n4x4G433Z4J4w3T4i3,4P3.4h4y433@4U3_4W4M0V3~4!4E3(4M0z454C1M2{1B2,2V0r212!3T0P2@2v0-1S1J2`0o2|3d3J054}0.554+0~0W130.0E574V250Q395i4#340E130i0j0L0$1 0n1#0o0g5n5c0112040v5B4o3i131b0j2L5H3r5E0q0,3Q0K5U0K4Q3`0$2l04011t0i0S0M0+1/1.0K2?0u5M1/2I0%5w5y0g0K2I0m005L2L015T5V5X4h13290E2i0#1A4C5W5j1=0M130N3J6d5o5J045 0o625U64255e040+5h6c6s3i0j132s5O3T5E5G4:6e3E660i680i6a6E3`5Q6j6z0~6g040N6i6y6J010u0+134/2 6#5E5S4J5V6:6k5C6u2L0#0p0g0i6T6#6%4z3Q066:6U3s5r0L1a0c6}6l6V6h7a5C6 046*4e736#6u0E3V7e5I6K040$0M0p0$0L6o7p3r0M5l6v6|6!7b750467696b6+7G6-6q6;740i5r7z3T6W6Z2}6=7q7H5s5u5^1.5A6I7N136H7M5C7S7s7u7w7y7+5C6S6/6;6r7l136w7U417T7F5C7W7X3d7Z3M76786Q487O7|7}7k7G7;0$0o0p0m82487W8q6t0P130U3u8m7P8j6?661$6x7Y7R848G6#6W020R0#0h8t6m0i770n797_7!8g2}728i8B7!7;8S8d857!8s8+8b047E8Z8#8$8/8m8o8Q7c6X8{010W8v040f0g1y8A637 7I0?6p8W5P136.8=8?7~7G6u2h0|718@3T6u818.7V7C2?0#8~8l8n8p9c6F9e969i7:8c8U8~6W0x883o8a3T7g4c9g9F7!6@0/6`8;898H8:8T8V8Z1B59544;9+0d4@1B0#4_9:2Y2T0n1-9-4@1H5b7!2L0u0L680W0o0L0!0t131t1v1x1z0K9f561O3e0.0:0=0@3T0r2i0R5z133B181v1d0)4~0K682N3V0+0$0Z2Pau1F3e1I0k1l0O8n0#0K2;0#0Z0R2L5`1.0@0.0p0c0^0{0K290K0p1l8_0ma(1l0*7u692J2L2N1u29aP0n0S2M0K0`0K0S1b0+9_5-584~7s9z9)b91MaJ1J0+0u0R0K3u0#0~0a2d3T0#0Q1u0M0*6(0K0$0g0P1X1{0O0$0,0d0d0P0r0i0e0*0$0.1$0S0g0e2(0#0d1!0d0*0.0Pa40r2Tbs0ubu0+0A0V0C0e0V0e0y0d1;0/0$1C0S0R0d0z0s0n0y0e0$b{2d100#1.0~0,0Q1b0i2;0R0,010d3wax2I2?1la^0M1E0i0r0Z0K0(0K0Z0P0g0+2L0K1ra+0+ac2u6O0K2C6`bk2a0m0l8m0K0Gbe1Q1S3r1@1#1%1)9~3r2r292b132x0%cy11aP0w0l221k57539~2~569*c#9p5f0o8F566#7C5W9B415q8:5t5v0g5x7)8e256Gdf6m7^7/8X135R7P745Z135$295)5+b01/5/5;5{1/5@dc5_dBb05~0g5;618h9O837I6M7K9J7d9sdOdk4e8!9T8^bbdU8rdT8J9j918x9adp6#8(9$dS8}d$257g7i4m9o3`7m7od@6m7t7v7xdJ5Ne06V7C2;9x6L6N6Pd68f9DdMd|658:d=9M2RdNek7$dbdd5zdi0~dhef3413e27@e59bdl9d040q9Eep6t80d19N9!9YeO8K6hen3wePd;ey1=8Y7j9heKe1d#d)86d(9Z7ld+8yeEe#7}746u0o8Eebele7018L8N8Pe}d:8*eF9C04afd{e$eWf4e-7G8-e*8%8Ie=8?9!a-em8~90139395ei979j8D8zeYeweh9Sfk989l7LdXejeL6veNeo747B5r0M9wf2eAe)d27,f7eJfb9Ie}9KeUe%0~9Qd.fv046^9Xe{8)fZ9(bHbd1O4=9.51158o3e1$040w7u5`a+1/0E8n0=5-0,5Wc|a-0B5.9$0K0N0K0vd,8mge0yeIf?5acCcJa%2I0j7u0_0oge1k0K2L5(5*1/0y0xb:0K0k0I1Bf 150df}9}05bhbjblbnbp3`brbtbv2dbybA1?bCbEbGbIbKbMbO1SbRbTbV0!bXbZb#b%g#b+b-b/b;b?0|b^b`b|b~c0c2c40Kc6c801cacccecgci0K0Ya.0i001zaP9lgC2Mcp1acrct2I161 1k0R042`2@0pcAeEhB0ihD0^1/aq0icB2I9*gjcv2h0g0:aq0g0qgeb14}1p0g0Z0!292EgB0r0pa$aY1/0j0{1/hq5.0/0#a`cIh*h:2F0o0e0K0)hp5va*cdcGa{iaa(0c5z0P0+0P1/aRe_1.2N1y0m0ecT4?0/0;0?3e9.ival04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)