THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομές Δεδομένων => Topic started by: leukosaraphs! on December 23, 2017, 12:07:35 pm



Title: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: leukosaraphs! on December 23, 2017, 12:07:35 pm
Σχόλια και απορίες σχετικά με το τρίτο μέρος της εργασίας DS - Pac Man

Η εκφώνηση βρίσκεται εδώ (http://alexander.ee.auth.gr:8083/eTHMMY/archive/46/downloadFile/7107/ds-project-2017-18-C.pdf) και είναι κοινή και για το τρίτο και για το πέμπτο εξάμηνο.

Η διορία υποβολής της εργασία και της απαιτούμενης αναφοράς είναι στις 14/1/18 23:59

Προσοχή: Κώδικες οι οποίοι είναι σωστοί και έχουν ανέβει πριν την λήξη των υποβολών της εργασίας θα διαγράφονται δίχως προειδοποίηση.  Το ίδιο ισχύει και για τις αναφορές.

Καλες γιορτες  :D :P


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: RioCompiler on December 29, 2017, 03:28:20 am
Όταν τρέχω το πρόγραμμα εμφανίζονται πάρα πολλά πακμαν και φαντάσματα. Αυτο λογικά οφείλετε στο copy του maze που γίνεται. Το έχει δοκιμάσει κανείς? Χρειάζεται κάποια εντολή να μην εμφανίζονται τα copies που δημιουργούντε?

Edit: Επιδιορθώθηκε το πρόβλημα.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Professor on December 30, 2017, 15:16:39 pm
Μας λεει πουθενα το depth ή βαζουμε κατι δικο μας αυθαιρετα? :-\


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Singularity on December 30, 2017, 16:07:50 pm
Μας λεει πουθενα το depth ή βαζουμε κατι δικο μας αυθαιρετα? :-\

depth 2


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: kantonio on January 05, 2018, 13:27:51 pm
Καλησπέρα παιδιά, θα ήθελα να ρωτήσω έχει κάποιος ιδέα για το πως προσθέτουμε τα nodes στην κλάση Node;;


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Patatompataria on January 05, 2018, 13:58:05 pm
Δε καταλαβαίνω τι εννοείς με την έκφραση προσθέτουμε nodes στην κλάση Node.
Αν λες πώς δημιουργείς νέο αντικείμενο, κανονικά με Node tade = new Node(ό,τι ορίσματα παίρνει ο constructor σου).
Αν ρωτάς πώς θα φτιαχτεί το δέντρο, στην εκφώνηση μας λέει ότι το κάθε node θα έχει τον γονιό του, καθώς και τα παιδιά του. Αν δεις το κομμάτι που έχει τον ψευδοκώδικα στο τέλος της εκφώνησης σε βοηθάει για το τι να κάνεις.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: leukosaraphs! on January 06, 2018, 01:20:01 am
για το depth = 2, ειμαστε σιγουροι?

καταφερε κανεις να το τρεξει για depth = 4?


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: RioCompiler on January 06, 2018, 04:10:36 am
Το depth δεν ειναι κάτι σταθερο(π.χ. 2). Θα μπει ως όρισμα στον constructor. Αρχικα θα ειναι 0, στη συνέχεια μέσα στο Subtree του pacman τα νέα nodes θα έχουν όρισμα depth 1 και τα nodes του subtree των φαντασμάτων depth 2.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: leukosaraphs! on January 06, 2018, 18:05:40 pm
Το depth δεν ειναι κάτι σταθερο(π.χ. 2). Θα μπει ως όρισμα στον constructor. Αρχικα θα ειναι 0, στη συνέχεια μέσα στο Subtree του pacman τα νέα nodes θα έχουν όρισμα depth 1 και τα nodes του subtree των φαντασμάτων depth 2.

ναι , αλλα εσυ καποτε θα πρεπει να ελεγξεις αν τα nodes σου ειναι φυλλα...

θες, δεν θες , δηλαδη, θα εχεις εναν αριθμο στο depth , κι ξαναρωταω

καταφερε κανεις να το κανει να τρεξει , οταν τα φυλλα ειναι στο επιπεδο 4(η 3 δεν ξερω πως το μετρατε) ?


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: marion_m on January 06, 2018, 18:22:09 pm
Στη συνάρτηση createSubtreeGhosts() λέει να αξιολογήσουμε τις διαθέσιμες θέσεις των φαντασμάτων; Πώς το κάνουμε αυτό; Υπάρχει κάποια σχετική συνάρτηση;


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: MrRobot on January 06, 2018, 20:57:24 pm
Θα χρησιμοποιήσεις τις allGhostMoves() και moveGhosts() που λέει στο pdf με την εκφώνηση της άσκησης.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Patatompataria on January 06, 2018, 22:06:34 pm
ναι , αλλα εσυ καποτε θα πρεπει να ελεγξεις αν τα nodes σου ειναι φυλλα...

θες, δεν θες , δηλαδη, θα εχεις εναν αριθμο στο depth , κι ξαναρωταω

καταφερε κανεις να το κανει να τρεξει , οταν τα φυλλα ειναι στο επιπεδο 4(η 3 δεν ξερω πως το μετρατε) ?


από τον ψευδοκώδικα στην εκφώνηση καταλαβαίνω ότι δεν ελέγχεις αν είναι φύλλα (πχ δεν κάνεις if (depth == maxDepth)) γιατί σου λέει ότι η createSubtreePacman καλεί σε κάθε κόμβο που φτιάχνει την createSubtreeGhosts, όμως η createSubtreeGhosts δεν καλέι καθόλου την createSubtreePacman, απλά κάνει evaluate τους κόμβους όταν τους φτιάξει (άρα θα είναι πάντα φύλλα στο 2ο επίπεδο).


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: MrRobot on January 07, 2018, 03:32:21 am
Ετσι όπως έχει τον κώδικα στην εκφώνηση όντως έτσι είναι. Αν όμως βάλεις και κλήση της createSubtreePacman μέσα στην createSubtreeGhosts με ανάλογο τρόπο της εκφώνηση τότε μπορείς να έχει μεγαλύτερο βάθος στην αναζήτη σου, η οποία θα τελειώνει με τον έλεγχο που αναφέρεις.

Επίσης για depth >= 4 χρειάζεσαι σίγουρα ab pruning γιατί έχεις να κάνεις με πλήθος κινήσεων της τάξης του 410 που είναι λίγο μεγαλύτερο από 106


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: thanosthehuge on January 12, 2018, 18:03:07 pm
Οι δυσδιαστατοι πινακες μεσα στην
Code:
ArrayList<int[][]> PacmanUtilities.allGhostMoves(Room[][] Maze, int[][] ghostPositions)
τι ακριβως περιεχουν? Κινησεις για καθε φαντασμα ή νεες θεσεις για καθε φαντασμα? Απο την εκφωνηση καταλαβαινω κινησεις αλλα αμα ειναι κινησεις τοτε ποιο το νοημα του να ειναι ArrayList με πινακες? Ενας πινακας δεν θα εφτανε?


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Patatompataria on January 12, 2018, 19:04:59 pm
κι εγώ κινήσεις είχα καταλάβει, αλλά είδα ότι περιέχουν συντεταγμένες, συν αυτό που λες. Άρα μάλλον οι θέσεις είναι.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: KG8 on January 13, 2018, 13:48:26 pm
Η συνάρτηση int[] PacmanUtilities.evaluateNextPosition(Room[][] Maze, int[] presentPosition, int direction, PacmanUtilities.borders), όταν η επόμενη κίνηση οδηγεί σε σύγκρουση με τον τοίχο, τι θέση θα επιστρέψει;


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Fidelity on January 13, 2018, 20:38:15 pm
Στον υπολογισμό του αλγορίθμου minmax πρεπει να υπολογίσουμε (στο πρώτο βήμα) το ελάχιστο evaluation ανάμεσα στις 16 κινήσεις των 4 φαντασμάτων (κάθε φάντασμα εχει το πολύ 4 διαθέσιμες κινήσεις). Πως θα γίνει αυτός ο υπολογισμός;


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: MrRobot on January 13, 2018, 20:51:00 pm
Θα χρησιμοποιήσεις την allGhostMoves για να σου επιστρεψει ολους τους δυνατους συνδιασμούς των φαντασμάτων και μετά κάθε έναν από αυτούς θα τους περάσεις στην moveGhosts.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: anngeopap on January 14, 2018, 13:03:03 pm
Υπάρχει κάποιος τρόπος να τρέχει πιο γρήγορα το παιχνίδι; Το έχω κάνει μάλιστα με βάθος μίας μονο κίνησης και φρόντισα να εκτελούνται όσο το δυνατόν λιγότερες εντολές για κάθε επόμενη κίνηση αλλά όταν το τρέχω πάει πολύ αργά. Τι μπορεί να φταίει;


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: leukosaraphs! on January 14, 2018, 13:10:01 pm
Επειδη ειχα μια συζητηση με τον Χρυσοπουλο σχετικα με την εργασια και την "ταχυτητα" της, θα σου πω οτι μου ειπε:

Ουσιαστικα, για το τελευταιο μερος της εργασιας, δεν εχεις την υποχρεωση να κανεις τον Pacman να λειτουργει βελτιστα, κι αυτο ειναι σωστο απο την αποψη οτι εχουμε κι εξεταστικη δεν γινεται να αφιερωθουμε στην εργασια. Αυτοι το μονο που θελουν να δουν ειναι οτι καταφερες να ενταξεις τον αλγοριθμο του Minimax μεσα στον κωδικα σου και αυτο τρεχει.
Οποιαδηποτε αλλη υλοποιηση, πχ ab prunning, ειναι δεκτη αλλα δεν ειναι υποχρεωτικη!

Τωρα για τον διαγωνισμο αν θες να συμμετασχεις, υπαρχουν διαφορες υλοποιησεις που μπορεις να δημιουργησεις σαν στρατηγικες, ετσι ωστε να κοβεις κλαδια απο το δεντρο σου. Το πιο ευκολο που μπορεις να προσπαθησεις ειναι να ενταξεις το ab prunning στην δημιουργια του δεντρου, και ετσι οχι απλα θα κοβεις κλαδια αλλα μερικα δεν θα δημιουργουνται κιολλας, θα εχεις ενα δυναμικο δεντρο!

Ξανα λεω , ομως, οτι για το παραδοτεο της 3ης εργασιας δεν σε νοιαζει ο Pacman να ειναι βελτιστος!


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: thanosthehuge on January 14, 2018, 17:28:39 pm
Για αυτόν το διαγωνισμό που λες, θα ληφθεί ως συμμετοχή η εργασία που θα έχουμε ανεβάσει μέχρι σήμερα, ή μπορούμε να τον φτιάξουμε κι άλλο τον κώδικα μας και να τον καταχωρήσουμε κάπου πιο μετά? Επίσης πότε θα γίνει ο "διαγωνισμός" αυτός μας έχουν πει?


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: MrRobot on January 14, 2018, 17:41:58 pm
Μπορείς για εκείνο το διαγωνισμό να χρησιμοποιήσεις όποιο κώδικα θες, δηλαδή μπορείς να προσθέσεις ότι θες στις ήδη υπάρχουσες εργασίες. Θα γίνει κάποια στιγμή μετά την εξεταστική.


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: Fidelity on January 14, 2018, 20:02:13 pm
Παιδιά τον αλγόριθμο της συνάντησης minmax τον πηρατε έτοιμο απο το ίντερνετ ή τον φτιάξατε μόνοι σας;


Title: Re: [Δομές Δεδομένων] Εργασία Γ 2017/2018 Προθεσμία 14/1/18
Post by: MrRobot on January 14, 2018, 20:06:23 pm
Παιδιά τον αλγόριθμο της συνάντησης minmax τον πηρατε έτοιμο απο το ίντερνετ ή τον φτιάξατε μόνοι σας;

Γενικά ο αλγόριθμος ένας είναι και από κάπου τον μάθαμε, ιντερνετ διαφάνειες κάποιο βιβλίο, όπως θες πες το. Τον κώδικα για όσους ξέρω μόνοι τους τον γράψανε.