Town of Iceberg: Visualizing a Minimum Dominating Set

Town of Iceberg: Visualizing a Minimum Dominating Set
Loading the math board and drawing, please wait…
2021-01-08 08:51
This example demonstrates, via a geometric point-and-edge layout, how to find a minimum dominating set that “covers” every vertex according to the induced adjacency/coverage rules. The key ideas are graph-theoretic minimum dominating sets and optimization (minimizing the number of selected vertices), with geometry providing an intuitive representation of neighbor relations. Construction highlights in GeoGebra include using Segment to draw the edge structure between points, Circle to define the coverage/selection region (a radius or neighborhood test), CountIf to count how many vertices meet the domination condition, and Text to label important points or the resulting set size. From the provided construction summary, it uses commands Segment, Circle, Text, and CountIf, along with multiple point objects (A through Z, plus Xpoint and Ypoint) and the generated segment objects (e.g., AC, AD, AB, BF, BG, etc.) that represent the underlying adjacency used to evaluate domination. Suitable for later secondary school and early university contexts in graph theory and discrete optimization, and for interactive exploration in GeoGebra.

GeoGebra Commands & Parameters

  1. Segment(A, C) → AC
  2. Segment(A, D) → AD
  3. Segment(A, B) → AB
  4. Segment(B, F) → BF
  5. Segment(B, G) → BG
  6. Segment(C, E) → CE
  7. Segment(C, P) → CP
  8. Segment(D, F) → DF
  9. Segment(D, E) → DE
  10. Segment(E, H) → EH
  11. Segment(E, K) → EK
  12. Segment(E, I) → EI
  13. Segment(F, I) → FI
  14. Segment(F, N) → FN
  15. Segment(G, O) → GO
  16. Segment(H, J) → HJ
  17. Segment(H, K) → HK
  18. Segment(I, L) → IL
  19. Segment(I, M) → IM
  20. Segment(J, K) → JK
  21. Segment(J, P) → JP
  22. Segment(J, W) → JW
  23. Segment(L, M) → LM
  24. Segment(L, R) → LR
  25. Segment(M, N) → MN
  26. Segment(M, S) → MS
  27. Segment(N, O) → NO
  28. Segment(O, S) → OS
  29. Segment(P, T) → PT
  30. Segment(P, Q) → PQ
  31. Segment(Q, U) → QU
  32. Segment(Q, W) → QW
  33. Segment(R, Z) → RZ
  34. Segment(R, S) → RS
  35. Segment(S, Z) → SZ
  36. Segment(T, U) → TU
  37. Segment(T, V) → TV
  38. Segment(U, V) → UV
  39. Segment(V, W) → VW
  40. Segment(V, Ypoint) → VY
  41. Segment(W, Xpoint) → WX
  42. Segment(Xpoint, Z) → XZ
  43. Segment(Xpoint, Ypoint) → XY
  44. Segment(Z, Ypoint) → YZ
  45. CountIf(x ≟ true, listOfCarts) → numCarts
  46. Circle(A, 0.35) → borderA
  47. Circle(B, 0.35) → borderB
  48. Circle(C, 0.35) → borderC
  49. Circle(D, 0.35) → borderD
  50. Circle(E, 0.35) → borderE
  51. Circle(F, 0.35) → borderF
  52. Circle(G, 0.35) → borderG
  53. Circle(H, 0.35) → borderH
  54. Circle(I, 0.35) → borderI
  55. Circle(J, 0.35) → borderJ
  56. Circle(K, 0.35) → borderK
  57. Circle(L, 0.35) → borderL
  58. Circle(M, 0.35) → borderM
  59. Circle(N, 0.35) → borderN
  60. Circle(O, 0.35) → borderO
  61. Circle(P, 0.35) → borderP
  62. Circle(Q, 0.35) → borderQ
  63. Circle(R, 0.35) → borderR
  64. Circle(S, 0.35) → borderS
  65. Circle(T, 0.35) → borderT
  66. Circle(U, 0.35) → borderU
  67. Circle(V, 0.35) → borderV
  68. Circle(W, 0.35) → borderW
  69. Circle(Xpoint, 0.35) → borderX
  70. Circle(Ypoint, 0.35) → borderY
  71. Circle(Z, 0.35) → borderZ
  72. Circle(A, 0.35) → fillA
  73. Circle(B, 0.35) → fillB
  74. Circle(C, 0.35) → fillC
  75. Circle(D, 0.35) → fillD
  76. Circle(E, 0.35) → fillE
  77. Circle(F, 0.35) → fillF
  78. Circle(G, 0.35) → fillG
  79. Circle(H, 0.35) → fillH
  80. Circle(I, 0.35) → fillI
  81. Circle(J, 0.35) → fillJ
  82. Circle(K, 0.35) → fillK
  83. Circle(L, 0.35) → fillL
  84. Circle(M, 0.35) → fillM
  85. Circle(N, 0.35) → fillN
  86. Circle(O, 0.35) → fillO
  87. Circle(P, 0.35) → fillP
  88. Circle(Q, 0.35) → fillQ
  89. Circle(R, 0.35) → fillR
  90. Circle(S, 0.35) → fillS
  91. Circle(T, 0.35) → fillT
  92. Circle(U, 0.35) → fillU
  93. Circle(V, 0.35) → fillV
  94. Circle(W, 0.35) → fillW
  95. Circle(Xpoint, 0.35) → fillX
  96. Circle(Ypoint, 0.35) → fillY
  97. Circle(Z, 0.35) → fillZ
  98. Text("S", S - (0.1, 0.1)) → vertexS
  99. Text("A", A - (0.15, 0.1)) → vertexA
  100. Text("B", B - (0.14, 0.1)) → vertexB
  101. Text("C", C - (0.15, 0.1)) → vertexC
  102. Text("D", D - (0.16, 0.1)) → vertexD
  103. Text("E", E - (0.12, 0.1)) → vertexE
  104. Text("F", F - (0.12, 0.1)) → vertexF
  105. Text("G", G - (0.15, 0.1)) → vertexG
  106. Text("H", H - (0.16, 0.1)) → vertexH
  107. Text("I", I - (0.06, 0.1)) → vertexI
  108. Text("J", J - (0.08, 0.1)) → vertexJ
  109. Text("K", K - (0.14, 0.1)) → vertexK
  110. Text("L", L - (0.12, 0.1)) → vertexL
  111. Text("M", M - (0.17, 0.1)) → vertexM
  112. Text("N", N - (0.16, 0.1)) → vertexN
  113. Text("O", O - (0.17, 0.1)) → vertexO
  114. Text("P", P - (0.14, 0.1)) → vertexP
  115. Text("Q", Q - (0.17, 0.1)) → vertexQ
  116. Text("R", R - (0.14, 0.1)) → vertexR
  117. Text("T", T - (0.14, 0.1)) → vertexT
  118. Text("U", U - (0.15, 0.1)) → vertexU
  119. Text("V", V - (0.14, 0.1)) → vertexV
  120. Text("W", W - (0.17, 0.1)) → vertexW
  121. Text("X", Xpoint - (0.14, 0.1)) → vertexX
  122. Text("Y", Ypoint - (0.14, 0.1)) → vertexY
  123. Text("Z", Z - (0.14, 0.1)) → vertexZ

AI Drawing Prompt Reference

Place a set of labeled vertices on the plane (using the available letter points A–Z plus the points Xpoint and Ypoint, along with P, Q, R, S, T, U, V, W, and Z as given). Draw straight segments to form the adjacency/edge structure, explicitly connecting A to C, D, and B, B to F and G, C to E and P, and then continue connecting the remaining points according to the provided pairs. Add circles centered at A, B, and C with radius 0.35 to illustrate the coverage neighborhood around these vertices. Include text/annotation where needed to support counting how many vertices satisfy the domination/coverage condition.
The prompt above was compiled from the original drawing commands and is for reference only.