Problema mariajelor stabile

Sugestii de întrebări la corectare

(etapa 1)

  • cum sunt reprezentate preferințele persoanelor din problemă?
  • cum sunt reprezentate logodnele?
  • ce înseamnă că pentru o persoană există un partener mai potrivit decât partenerul său actual?
  • ce listă parcurgi pentru a determina că pentru o persoană există un partener mai potrivit decât partenerul său actual? este necesar să o parcurgi până la final?
  • ce fel de recursivitate au diversele funcții din program?
  • unde ai folosit operatori logici? explică folosirea fiecăruia din ei.

(etapa 2)

  • ce funcții noi ai implementat în această etapă?
  • ce înseamnă că un match este stabil?
  • cum testezi că un match este stabil?
  • ce înseamnă fiecare parametru din apelul lui better-match-exists?

Atenție la corectare:

  • better-match-exists? trebuia copiată din etapa 1; dacă studenții nu au copiat-o sau i-au modificat comportamentul față de cel de la etapa 1, nu le vor trece testele pe vmchecker la etapele 3 și 4.

(etapa 3)

  • descrie în cuvinte algoritmul de găsire a unui match stabil
  • cum decizi că un cuplu este instabil?
  • ce se întâmplă când un bărbat cere în căsătorie o femeie deja logodită?
  • dacă un bărbat este părăsit de logodnică, el o cere în căsătorie pe prima femeie pe care nu a cerut-o încă, sau o ia de la început? (și unde în cod se întâmplă asta?)
  • ce fel de recursivitate au funcțiile create cu named let?

Atenție la corectare:

  • depunctați pentru orice apel duplicat (aceeași funcție pe aceleași argumente), chiar dacă este doar un (car x), însă nu depunctați dacă apelurile duplicate sunt pe ramuri diferite ale unui if sau cond, pentru că în acest caz expresia se evaluează o singură dată
  • nu am interzis explicit fold la TODO 1, deci nu depunctați pentru asta
  • la TODO 1 sunt permise funcții anonime ca argumente pentru funcționale, dar nu altfel de funcții ajutătoare
  • checker-ul de pe vmchecker folosește un stable-match? al nostru, pentru a preveni cazul în care stable-match-ul lor accepta și ce nu trebuie; totuși, stable-match?-ul nostru presupune că ei au în etapa2.rkt un better-match-exists? corect - în caz contrar, vor fi probleme cu checkerul (atât în etapa 3 cât și în etapa 4)

(etapa 4)

  • descrie în cuvinte algoritmul de match/path-to-stability/update-stable-match
  • la match, la ce îmi folosește faptul că persoanele din coadă sunt date ca parametru?
  • în ce situație funcția match lansează un nou proces de match, pentru o altă persoană decât cea primită ca argument?
  • ce reprezintă faptul că o persoană este logodită cu valoarea #f?
  • la path-to-stability, cum identific dacă persoana care intră în cameră este bărbat sau femeie și de ce trebuie să identific asta?
  • la update-stable-match, cum elimin cuplurile instabile din lista de logodne?
  • cum este reprezentat fiecare element din fluxul de instanțe SMP?

Atenție la corectare:

  • deși primele 3 exerciții nu au restricții asociate, este important să verificați la fiecare exercițiu că el este implementat conform algoritmului cerut; TODO2, TODO3 și TODO4 nu fac decât să întoarcă soluții ale problemei, care s-ar putea obține și cu Gale-Shapley, nu neapărat în modul cerut, dar în acest caz aceste rezolvări nu trebuie să primească niciun punct
pp/23/teme/racket-sugestii-corectare.txt · Last modified: 2023/04/04 13:11 by mihaela.balint
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