Presentation is loading. Please wait.

Presentation is loading. Please wait.

CEG 221 Lesson 7: Algorithm Development From Start to Finish Mr. David Lippa.

Similar presentations


Presentation on theme: "CEG 221 Lesson 7: Algorithm Development From Start to Finish Mr. David Lippa."— Presentation transcript:

1 CEG 221 Lesson 7: Algorithm Development From Start to Finish Mr. David Lippa

2 Overview Algorithm Development : Stable Marriage –What is the Stable Marriage Algorithm? Data Structure Development –struct PersonType Function Development –Populating people from a file Putting It Together Questions

3 Stable Marriage Algorithm Assume Equal Numbers of Men & Women One gender proposes, the other accepts/rejects proposals and can dump their current intended. –Each follow rules of engagement (ha ha) The overall algorithm: –While there are still unengaged people, go through a round of match-making

4 Stable Marriage: Rules of Engagement Men (Proposer) Unengaged  propose Dumped  go to next on preference list Women (Proposee) Unengaged  accept Engaged and … –Like current better  tell suitor to buzz off –Like new one better  dump fiancé for the new guy

5 Overall Algorithm // define data structures // make people // build preference lists while(someoneIsNotEngaged) { for each unengaged man { propose to next on preference list } // display results

6 Define a Person // define NAME_SIZE, NUM_PPL struct PersonType { char mName[NAME_SIZE]; struct PersonType* mpSpouse; struct PersonType* mpPreferences[NUM_PPL]; unsigned int mPreferred; int mHash; }; /* the hash value will be used in populating each person’s preference list */

7 Load People We need to get their preference list from the user. In this case, we will be using fprintf / fscanf, and instead of getting input or writing output from/to the terminal, we will be getting it from a file. So let’s define the file

8 Define Persons.txt Defined to be a list of people Then each person and his/her preference list Do this twice – one for men and for women

9 Make Persons.txt 5Austin David Jon Ichabod Manuel 5Anna Bertha Jamie Katherine Michelle Austin Michelle Katherine Bertha Anna Jamie David Katherine Jamie Bertha Anna Michelle Jon Jamie Anna Michelle Katherine Bertha Ichabod Jamie Anna Michelle Katherine Bertha Manuel Katherine Michelle Anna Bertha Jamie Anna David Jon Ichabod Manuel Austin Bertha Jon David Austin Manuel Ichabod Jamie Manuel Ichabod Jon Austin David Katherine David Austin Manuel Ichabod Jon Michelle Manuel Jon Ichabod Austin David

10 What else do we need? Finds a person by name If it doesn’t exist, it returns NULL Prototype: struct PersonType* find(struct PersonType*[], char* name); We won’t implement this function – assume that it works

11 Loader Pseudo Code 1) Read first line int num = how many to read Each string is a person’s name, add them to the array of structures 2) Do (1) one more time 3) For (i = 0; i < num; i++) read name find name in the list of pointers for (j = 0; j < num; j++) Read next person on preference list Find the person pointer Add person to name’s preference list 4) Do (3) one more time

12

13 Questions?


Download ppt "CEG 221 Lesson 7: Algorithm Development From Start to Finish Mr. David Lippa."

Similar presentations


Ads by Google