This is an old revision of the document!


Haskell: Graph Zoo

Sugestii de întrebări pentru prezentare:

Etapa 1

  • care este diferența dintre Set-uri și listele standard?
  • care sunt avantajele utilizării Set-urilor în loc de liste standard în temă?
  • ce face funcția fromList pentru Set-uri?
  • ce funcționale pe Set-uri ai folosit?
  • ce alte funcții predefinite pe Set-uri ai folosit?
  • cum ai implementat funcția x?
  • cum ai gestionat ciclurile la search?
  • cum ai derivat bfs și dfs din search?
  • cum se valorifică evaluarea leneșă la countIntermediate?

Etapa 2

  • cum ai redefinit StandardGraph folosind data (întrebare obligatorie, vedeți spreadsheet)?
    • exemplu
      data StandardGraph a = SG { nodes :: S.Set a, edges :: S.Set (a, a) }
      fromComponents ns es = SG (S.fromList ns) (S.fromList es)
  • cum ai implementat funcția x?
  • ce tipar comun ai observat la funcțiile removeNode, splitNode, mergeNodes?
    • R: prelucrarea propriu-zisă e doar pt constructorul Node, în rest se propagă recursiv
  • cum ai generat partițiile utilizând list comprehensions (dacă au respectat hint-ul)?
  • care e un avantaj al reprezentării din etapa 2 vs reprezentarea din etapa 1?

Etapa 3

  • cum ai definit clasa care generalizează conceptul de graf: parametrizată cu tipul concret sau cu constructorul de tip (întrebare obligatorie, vedeți enunț și spreadsheet)? de ce?
    • R: parametrizată cu constructorul de tip în sine, pentru a expune tipul etichetelor nodurilor
  • care este tipul funcției nodes, presupunând că e definită în interiorul clasei (întrebare obligatorie, vedeți enunț și spreadsheet)?
    • R:
      nodes :: Graph g => g a -> S.Set a
  • ce face fromInteger din Num?
  • de ce nu este suficientă instanța implicită de Eq obținută cu deriving?
  • care a fost cea mai generală funcțională, care a permis implementarea tuturor celorlalte funcții din AlgebraicGraph?
    • R: extend
  • care este diferența dintre extend și fmap?
    • R: fmap nu modifică structura, ci doar etichetele
  • cum au simplificat mulțimile implementarea lui isModule?
    • R: S.map poate reduce dimensiunea mulțimii ⇒ compararea lungimii cu 1
  • cum au simplificat mulțimile implementarea lui isModularPartition?
    • R: la fel ca la isModule
  • cum ai determinat partiția maximală?
pp/22/teme/haskell-prezentare.1652115225.txt.gz · Last modified: 2022/05/09 19:53 by mihnea.muraru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0