• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 01:28:23 am

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 01:28:23 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by Yamal
[June 16, 2025, 23:46:31 pm]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[June 16, 2025, 15:55:08 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[June 16, 2025, 12:01:53 pm]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[June 16, 2025, 10:22:18 am]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]

Έναρξη Δηλώσεων Συμμετοχή...
by IEEE SB
[June 14, 2025, 00:10:19 am]
Στατιστικά
Members
Total Members: 9960
Latest: valco08
Stats
Total Posts: 1426678
Total Topics: 31710
Online Today: 164
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 34
Guests: 130
Total: 164
Athinaaz
vaggelisx
Yamal
κοτζακ
stavrosk
lasef
nasos
Saint_GR
Mr Watson
Loudis1
eed
thegreekbaron
thomasdt
thathas12
iliaspapam
ArchieHadCells
ValKar
vagelismo
ilias123
dimitris585
μιλτοςμ
Christina_R
Stathiss
zgeorgitz
charbel
myrtosa
christina02
anon
kokkinosgior
bougatsa
george14
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Επίσημη ενημέρωση για Αντιστοίχηση Μαθημάτων ΝΠΣ με ΠΠΣ και η συζήτηση στο forum.
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 3ο Εξάμηνο > Δομές Δεδομένων (Moderators: chatzikys, Tasos Bot, tzortzis) > [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 Go Down Print
Author Topic: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι  (Read 3541 times)
Wade
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 5795



View Profile WWW
[Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« on: February 06, 2009, 01:42:11 am »

Όπως είπε ο κ. Μήτκας, όσοι συμμετείχαν σήμερα στο τουρνουά Blokus πρέπει να κάνουν ένα ποστ στο οποίο θα περιγράφεται, σε φυσική γλώσσα, ο αλγόριθμος που χρησιμοποίησαν στο τουρνουά.  Αυτό είναι υποχρεωτικό έτσι ώστε να προσμετρηθούν οι προσθετικές μονάδες που δόθηκαν ως αμοιβή στους διαγωνιζόμενους.

Λοιπόν, σ' αυτό το τόπικ μπορείτε να ποστάρετε τους αλγόριθμούς σας! Smiley
Logged

Wade
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 5795



View Profile WWW
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #1 on: February 06, 2009, 01:44:54 am »

Παρακάτω δίνουμε τον full κατάλογο των τεχνικών μας. Παρακαλούνται και οι υπόλοιπες ομάδες να "καρφώσουν" τις μεθόδους τους Wink

Ομάδα Α5 (Ομάδα 16 δηλώσεων):
Καράς Δημήτριος
Κουφογιάννης Φραγκίσκος


Ο αλγόριθμος που χρησιμοποιείται είναι ο minimax, στον οποίο έχουν εφαρμοστεί διάφορες τεχνικές οι οποίες “κουμπώνουν” πάνω στον αλγόριθμο για καλύτερη απόδοση.  Επίσης, έγιναν και μερικές μικρές τροποποιήσεις σε διάφορες συναρτήσεις (όπως αυτές που αφορούν τον εντοπισμό των ελεύθερων γωνιών ενός παίκτη) έτσι ώστε να βελτιωθεί η λειτουργικότητά τους.

Οι τρεις πρώτες κινήσεις του παιχνιδιού είναι προκαθορισμένες, και επιλεγμένες έτσι ώστε να είναι μαθηματικώς αδύνατον να εμποδιστούν από τον αντίπαλο.  Αυτό έχει γίνει με το σκεπτικό ότι στις πρώτες κινήσεις ο παίκτης προσπαθεί να πλησιάσει όσο το δυνατόν περισσότερο προς το κέντρο του ταμπλό, και ταυτόχρονα έτσι μειώνεται κατά πολύ ο απαιτούμενος χρόνος για να παιχτεί μια κίνηση.

Το βάθος της ανάλυσης μεταβάλλεται ανάλογα με την κίνηση στην οποία βρισκόμαστε, έτσι ώστε να αξιοποιείται ο διαθέσιμος χρόνος των 15 δευτερολέπτων ανά κίνηση.  Συγκεκριμένα (όπου βάθος 1 σημαίνει την ανάλυση μόνο του χρώματος που παίζει, χωρίς να ψάχνει άλλα χρώματα):
4η κίνηση: Βάθος 1
5η – 10η κίνηση: Βάθος 2
11η – 15η κίνηση: Βάθος 3
16η – 21η κίνηση: Βάθος 2

Οι συναρτήσεις αξιολόγησης που χρησιμοποιήθηκαν είναι οι εξής:
evaluate: Επιστρέφει μια γραμμική σχέση μεταξύ των διαθέσιμων γωνιών της ομάδας του παίκτη και της ομάδας του αντιπάλου.  Για την 6η ως την 11η κίνηση, ο παίκτης γίνεται αρκετά επιθετικός: ο αριθμός των γωνιών του αντιπάλου πολλαπλασιάζεται επί 2 έτσι ώστε να δοθεί μεγαλύτερη βαρύτητα στο κλείσιμο των γωνιών του αντιπάλου.  Για τις υπόλοιπες κινήσεις, η συνάρτηση επιστρέφει τη διαφορά των γωνιών των δύο αντίπαλων ομάδων.

DangerousCorners: Μία δευτερεύουσα συνάρτηση αξιολόγησης που περιφέρει ένα τετράγωνο 3x3 στο ταμπλό και ψάχνει γωνίες του αντιπάλου που αποτελούν άμεση απειλή για μία ή περισσότερες από τις δικές μας γωνίες.

Οι παραπάνω δύο στρατηγικές μπορούν να ιδωθούν από μια γενικότερη σκοπιά. Το γενικό πρόβλημα έχει ως εξής: «Δοθείσας μιας σκακιέρας με κάποια κομμάτια τοποθετημένα να εξαχθούν κάποια χρήσιμα συμπεράσματα». Έτσι, χρησιμοποιούνται διάφορα φίλτρα που σαρώνουν τη σκακιέρα. Αν το φίλτρο αυτό είναι ένα τετράγωνο 2x2 εντοπίζεται το είδος της γωνίας. Για 3x3 υπολογίζεται ο κίνδυνος για κάποια γωνία. Μήπως για 4x4 μπορεί να εξαχθεί κάποιο ανάλογο συμπέρασμα;

Τέλος, από τον αλγόριθμο minimax μπορεί να προκύψουν πολλές κινήσεις με την ίδια αξία.  Μεταξύ των κινήσεων με τη μεγαλύτερη αξία, επιλέγεται αυτή που έχει τη μεγαλύτερη απόσταση από τη γωνία εκκίνησης, στα πλαίσια της επιθετικής στρατηγικής που εφαρμόζεται.

Σ’ αυτό το σημείο μπορούμε να παρουσιάσουμε τον αλγόριθμο σε μορφή φυσικής γλώσσας:

Αν είναι η 1η, 2η ή 3η κίνηση:
   Τοποθέτησε την κατάλληλη προκαθορισμένη κίνηση
Αλλιώς:
   Προσδιόρισε το βάθος ανάλογα με τον αριθμό της κίνησης
   Κάλεσε την αναδρομική συνάρτηση του αλγορίθμου minimax μ’ αυτό το βάθος
      Εφάρμοσε τις συναρτήσεις αξιολόγησης evaluate και DangerousCorners
      Βρες τη μέγιστη αξία κίνησης και τις αντίστοιχες κινήσεις
      Μεταξύ αυτών, διάλεξε αυτήν που είναι μακρύτερα από τη γωνία εκκίνησης
   Παίξε την κίνηση που επιστρέφει η αρχική κλήση της αναδρομικής συνάρτησης
« Last Edit: February 06, 2009, 10:55:18 am by Wade » Logged

miltiadis
Ανερχόμενος/Ανερχόμενη
**
Posts: 56


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #2 on: February 06, 2009, 11:03:28 am »

Εμείς στην Ομάδα 2 (Α2) ο κώδικάς μας έτρεχε ως εξής:

Αν είναι κάποια από τις 1ες τρεις κινήσεις, παίξε ένα κομμάτι σε προκαθορισμένη θέση
Αλλιώς Βρες όλα τα πιθανά κομμάτια
Για κάθε κομμάτι στα πιθανά κομμάτια
     Δημιούργησε ένα νέο board και παίξε αυτή την κίνηση.
     Αξιολόγησε την κίνηση αυτή, αναδρομικά μεσω της συνάρτησης alphabetaPruning.
     Αν είναι καλύτερη από τις προηγούμενες αποθήκευσέ.

Παίξε την καλύτερη κίνηση


alphabetaPruning()
  Αν το βάθος αναζήτησης είναι 0 ή δεν υπάρχουν επόμενες κινήσεις επέστρεψε το evalute (board)
  Βρές όλες τις πιθανές κινήσεις για το καινούριο board
  Για κάθε κίνηση
    Αξιολόγησέ την
    Αν έχει βρεθεί άλλη κίνηση που να συμφέρει τον προηγούμενο παίκτη περισσότερο σταμάτα (κλάδεμα)
    Αν η αξιολόγηση της κίνησης είναι καλύτερη από τις προηγούμενες αποθήκευσέ την.
  Επέστρεψε την καλύτερη αξιολόγηση για τον παίκτη που παίζει τώρα

evaluate()
  Μέτρα τις γωνίες και τα κουτιά του κάθε παίκτη και επέστρεψε μια τιμή αξιολόγησης


Κατά την εύρεση των πιθανών κομματιών αυξομειώναμε τον αριθμό τους ανάλογα με τη ροή του παιχνιδιού.
Logged
cyberwizard
Ανερχόμενος/Ανερχόμενη
**
Gender: Male
Posts: 69


Homo Alternativus


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #3 on: February 06, 2009, 14:06:41 pm »

Ομάδα Α1
Σπανουδάκης Εμμανουήλ
Σκαλίδης Εμμανουήλ


Ο δικός μας αλγόριθμος, έτρεχε με μάλλον απλό τρόπο, σε σχέση τουλάχιστον με τους προλαλήσαντες Smiley .

1.Από την αρχή του παιχνιδιού, αναζητούσε σε κάθε κίνηση τον μέγιστο αριθμό τετραγώνων ανάμεσα στα υπάρχοντα πολυόμινα μας.Κατόπιν, με βάση αυτόν τον αριθμό, έβρισκε όλα τα πολυόμινα που είχαν τον συγκεκριμένο αριθμό τετραγώνων.

2.Έκανε έλεγχο ώστε, αν έστω και ένα από αυτά τα κομμάτια χωρούσε στο ταμπλώ, έδινε το Οκ για συνέχιση του αλγορίθμου. Ειδαλλώς, επέστρεφε στο βήμα 1, για αριθμό τετραγώνων μειωμένο κατά 1. Αν τελειώναν οι επαναλήψεις και δεν είχε βρεθεί ούτε μια πιθανή κίνηση, ο αλγόριθμος έθετε τον παίχτη μας σε κατάσταση Dead.

3.Εφόσον είχε βρεθεί έστω μια πιθανή κίνηση,δημιουργούνταν ένα ταμπλώ κλώνος και παιζόταν εκεί.

4.Για κάθε κίνηση του παίχτη μας, εφαρμόζαμε τα βήματα 1 και 2, για τον επόμενο αντίπαλο μας.

5.Εφόσον ο αντίπαλος είχε κινήσεις να παίξει, δημιουργούμε ένα δεύτερο ταμπλώ κλώνο, κλώνο  του προηγούμενου κλώνου (κλώνοι παντού!).Παίζουμε σε αυτό το ταμπλώ την κίνηση του αντιπάλου.

6.Καλούμε την evaluate(clone2), για αξιολόγηση του ταμπλώ. Η αξιολόγηση του ταμπλώ γινόταν μόνο με την χρήση της διαφοράς : Τρέχουσες γωνίες παιχτών μας - Τρέχουσες γωνίες αντιπάλων μας.

7.Επαναλαμβάνουμε τα βήματα 5,6 για όλες τις κινήσεις του αντιπάλου μας.
8.επιστρέφουμε στο βήμα 3, για τα επόμενα πιθανά κομμάτια του παίχτη μας.

9.Με γεμάτο πλέον το δέντρο μας, εφαρμόζαμε τον αλγόριθμο minimax, και επιλέγαμε την καλύτερη κίνηση.
10.Παίζαμε την κίνηση.
Logged

Λίιιιιιιιιιιιγο ακόμα.....
SolidSNK
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4617


free()'d and attuned


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #4 on: February 06, 2009, 14:20:52 pm »

grz wade Smiley


Ακούστε εδώ τον παιχταρά. Όταν περιαυτολογούσα μέσα μου και έλεγα "ο αλγόριθμος μου είναι εκτός συναγωνισμού" αποδείχθηκε περίτρανα πως ήταν όντως εκτός συναγωνισμού, καθώς για άγνωστους λόγους, ακυρώθηκα. χα...

Έκανα 4 (ουσιαστικά 3) evaluation functions, που βασίστηκαν  στο μοντέλο με τη διαφορά γωνιών , αλλά επεκτάθηκα αρκετά καθώς εισήγαγα δυναμική αξιολόγηση της αξίας κάθες γωνίας, ανάλογα με πόσα κ ποια κομμάτια μπορούν να παιχτούν και αν καλύπτεται πλάγια από κάποιο αντίπαλο χρώμα. Μια ξεχωριστή function δημιουργήθηκε για την αξιολόγηση της επεκτασιμότητας της κίνησης. Επίσης , έκανα διάφορα trick για να νικήσω το χρόνο, όπως ίδιες 3 πρώτες κινήσεις , αλλά και περιορισμό της scan the board στο κέντρο του ταμπλό για μικρότερες δυνατές κινήσεις (στην αρχή του παιχνιδιού). Θα ποσταριστούν σήμερα αν δε βαριέμαι. Σόρρυ , αλλά ξενέρωσα πάρα πολύ άγρια.
« Last Edit: February 06, 2009, 14:25:58 pm by SolidSNK » Logged

"Savior, conqueror, hero, villain. You are all things, Revan, and yet you are nothing. In the end you belong to neither the light nor the darkness. You will forever stand alone."
Matzika
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Female
Posts: 1313


my immortality


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #5 on: February 06, 2009, 23:54:21 pm »

Quote from: cyberwizard on February 06, 2009, 14:06:41 pm
Ομάδα Α1
Σπανουδάκης Εμμανουήλ
Σκαλίδης Εμμανουήλ


Ο δικός μας αλγόριθμος, έτρεχε με μάλλον απλό τρόπο, σε σχέση τουλάχιστον με τους προλαλήσαντες Smiley .

1.Από την αρχή του παιχνιδιού, αναζητούσε σε κάθε κίνηση τον μέγιστο αριθμό τετραγώνων ανάμεσα στα υπάρχοντα πολυόμινα μας.Κατόπιν, με βάση αυτόν τον αριθμό, έβρισκε όλα τα πολυόμινα που είχαν τον συγκεκριμένο αριθμό τετραγώνων.

2.Έκανε έλεγχο ώστε, αν έστω και ένα από αυτά τα κομμάτια χωρούσε στο ταμπλώ, έδινε το Οκ για συνέχιση του αλγορίθμου. Ειδαλλώς, επέστρεφε στο βήμα 1, για αριθμό τετραγώνων μειωμένο κατά 1. Αν τελειώναν οι επαναλήψεις και δεν είχε βρεθεί ούτε μια πιθανή κίνηση, ο αλγόριθμος έθετε τον παίχτη μας σε κατάσταση Dead.

3.Εφόσον είχε βρεθεί έστω μια πιθανή κίνηση,δημιουργούνταν ένα ταμπλώ κλώνος και παιζόταν εκεί.

4.Για κάθε κίνηση του παίχτη μας, εφαρμόζαμε τα βήματα 1 και 2, για τον επόμενο αντίπαλο μας.

5.Εφόσον ο αντίπαλος είχε κινήσεις να παίξει, δημιουργούμε ένα δεύτερο ταμπλώ κλώνο, κλώνο  του προηγούμενου κλώνου (κλώνοι παντού!).Παίζουμε σε αυτό το ταμπλώ την κίνηση του αντιπάλου.

6.Καλούμε την evaluate(clone2), για αξιολόγηση του ταμπλώ. Η αξιολόγηση του ταμπλώ γινόταν μόνο με την χρήση της διαφοράς : Τρέχουσες γωνίες παιχτών μας - Τρέχουσες γωνίες αντιπάλων μας.

7.Επαναλαμβάνουμε τα βήματα 5,6 για όλες τις κινήσεις του αντιπάλου μας.
8.επιστρέφουμε στο βήμα 3, για τα επόμενα πιθανά κομμάτια του παίχτη μας.

9.Με γεμάτο πλέον το δέντρο μας, εφαρμόζαμε τον αλγόριθμο minimax, και επιλέγαμε την καλύτερη κίνηση.
10.Παίζαμε την κίνηση.


ακριβώς τον ίδιο αλγόριθμο γράψαμε!! Tongue
Logged
edenaxas
Guest
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #6 on: February 07, 2009, 01:51:01 am »

Quote from: SolidSNK on February 06, 2009, 14:20:52 pm
grz wade Smiley


Ακούστε εδώ τον παιχταρά. Όταν περιαυτολογούσα μέσα μου και έλεγα "ο αλγόριθμος μου είναι εκτός συναγωνισμού" αποδείχθηκε περίτρανα πως ήταν όντως εκτός συναγωνισμού, καθώς για άγνωστους λόγους, ακυρώθηκα. χα...

Έκανα 4 (ουσιαστικά 3) evaluation functions, που βασίστηκαν  στο μοντέλο με τη διαφορά γωνιών , αλλά επεκτάθηκα αρκετά καθώς εισήγαγα δυναμική αξιολόγηση της αξίας κάθες γωνίας, ανάλογα με πόσα κ ποια κομμάτια μπορούν να παιχτούν και αν καλύπτεται πλάγια από κάποιο αντίπαλο χρώμα. Μια ξεχωριστή function δημιουργήθηκε για την αξιολόγηση της επεκτασιμότητας της κίνησης. Επίσης , έκανα διάφορα trick για να νικήσω το χρόνο, όπως ίδιες 3 πρώτες κινήσεις , αλλά και περιορισμό της scan the board στο κέντρο του ταμπλό για μικρότερες δυνατές κινήσεις (στην αρχή του παιχνιδιού). Θα ποσταριστούν σήμερα αν δε βαριέμαι. Σόρρυ , αλλά ξενέρωσα πάρα πολύ άγρια.
μηπως αργουσε πολυ να δωσει αποτελεσμα?
Logged
SolidSNK
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4617


free()'d and attuned


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #7 on: February 07, 2009, 06:37:53 am »

noez, η δομή του δέντρου αργούσε , το evaluation παραδοσιακά δεν είναι το χρονοβόρο κομμάτι.
Logged

"Savior, conqueror, hero, villain. You are all things, Revan, and yet you are nothing. In the end you belong to neither the light nor the darkness. You will forever stand alone."
edenaxas
Guest
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #8 on: February 07, 2009, 13:43:23 pm »

Quote from: SolidSNK on February 07, 2009, 06:37:53 am
noez, η δομή του δέντρου αργούσε , το evaluation παραδοσιακά δεν είναι το χρονοβόρο κομμάτι.
σε αυτο αναφερομαι. συνηθως αν δεν κανεις μια αποδοτικη recursive παιρνει πολυ. απο την αλλη αν εχεις κανει recursive που εξεταζει καθε κλαδο μεχρι ενα συγκεκριμενο βαθος και πισω, αν εχεις βαλει πολυ βαθος,  θα σου αργησει. απλα και περυσι που ειχαν τουρνουα mancala, ο junior ειχε κανει ενα καλο, σωστο αλγοριθμο depth first, αλλα ειχε βαλει να ψαχνει μεχρι βαθος 13. Ομως κριτιριο ηταν να εχεις αποτελεσμα σε 15sec, αν θυμαμαι καλα. γι'αυτο σου λεω, μηπως σου αργησε το tree searching?
Logged
SolidSNK
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4617


free()'d and attuned


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #9 on: February 07, 2009, 14:10:54 pm »

χεχ νόμιζα αναφερόσουν μόνο στα evaluation. Ναι η δημιουργία του δέντρου αργούσε πολύ. Το να κάνεις evaluate είναι , σου λέω, ελάχιστα μιλιδευτερόλεπτα. Την ερώτηση γενικά δεν την καταλαβαίνω (αυτό το "tree searching"  Huh)... επαναλαμβάνω αργούσε η δημιουργία του δέντρου από βάθος 2 και άνω. Γι αυτό και παράτησα τελείως τη φάση δέντρο.
Για ταχύτητα αυτό που έκανα ήταν να φτιάξω τη CentreScanTheBoard που ήταν μια πετσοκομμένα scantheboard για το κέντρο του ταμπλό στην αρχή του παιχνιδιού.
Code:
public MySet_6478_6501 CentreScanTheBoard(Board B , Color c)
{
MySet_6478_6501 moves = new MySet_6478_6501();
for ( int i = 6 ; i < B.getDimensions()[0] - 6 ; i++ )
{
for (int j = 6 ; j < B.getDimensions()[1] - 6 ; j++ )
{
if (B.getBoard()[i][j].getColor() == c)
{
if ( B.getBoard()[i-1][j].getColor() != c && B.getBoard()[i][j-1].getColor() != c && B.getBoard()[i-1][j-1].getColor() == null)
{
//Add an element to the array
moves.add(new SetElement(null , i , j , 1));
}
if ( B.getBoard()[i-1][j].getColor() != c && B.getBoard()[i][j+1].getColor() != c && B.getBoard()[i-1][j+1].getColor() == null)
{
//Add an element to the array
moves.add(new SetElement(null , i , j , 2));
}
if ( B.getBoard()[i+1][j].getColor() != c && B.getBoard()[i][j-1].getColor() != c && B.getBoard()[i+1][j-1].getColor() == null)
{
//Add an element to the array
moves.add(new SetElement(null , i , j , 3));
}
if ( B.getBoard()[i+1][j].getColor() != c && B.getBoard()[i][j+1].getColor() != c && B.getBoard()[i+1][j+1].getColor() == null)
{
//Add an element to the array
moves.add(new SetElement(null , i , j , 4));
}
}
}
}
return moves;
}


Να τα evaluations:

Η power rating βασίζεται στο ότι μια γωνία στην οποία μπορούν να παιχτούν κομμάτια είναι ισχυρή. Όρισμα έπαιρνε ένα μόνο set element , και καλλούσε τι where it fits για το mini αυτό myset.
Code:
int cornerPowerRating(Board b , Color c , gr.auth.ee.dsproject.blokus.set.SetElement move )
{
int rating = 0;
MySet_6478_6501 testmove = new MySet_6478_6501();
testmove.add(move);
for (int i = 0 ; i < b.getPlayerForColor(c).getInventory().size() ; i++)
{
Piece testpiece = b.getPlayerForColor(c).getInventory().elementAt(i);
MySet_6478_6501 moves = findWhereItFits(b , testpiece.clone() , testmove);
if ( !moves.isEmpty() )
{
rating += getboxnum(testpiece);
}
}
return rating;
}

Η βασική evaluation function usablecornerseval, που βασιζόταν στο κλασσικό γωνίες μου μείων γωνιες τους. Εδώ τέσταρε πρώτα αν χωράει το μονόμινο στη γωνία, και αν όχι τότε δεν υπολογιζόταν καθόλου. Αν μπορούσε να μπει , προσθέταμε στο γενικό αποτέλεσμα τη βαρύτητα της γωνίας , που επηρρεαζόταν από 2 πράγματα. Το ένα , αν περικλείται από 1 ή 2 χρώματα του αντιπάλου , όπου αντί για 1 είχε βαρύτητα 2 , 3  αντίστοιχα (ή 3 , 5 δεν είχα καταλήξει τελείως σε αυτό) διότι η γωνία θεωρούταν δεδομένη , και το 1 , 2 ,3 επί το powerRating της γωνίας. Ε μετά αφαιρούσαμε το σύνολο για όλα τα χρώματα, ανάλογα ποιος ήταν φίλος και ποιος εχθρός για το τελικό evaluation. There you go
Code:
ωπ περιμένετε λίγο γιατί είμαι σε windows και την έχω στο linux, να της κάνω λίγο calibration και θα τη ποστάρω!

Αν το τελικό eval ήταν ίδιο μεταξύ των κινήσεων, υπήρχε μια απλή function για να ελέγχει την επεκτατικότητα κάθε κίνησης!



« Last Edit: February 07, 2009, 14:45:41 pm by SolidSNK » Logged

"Savior, conqueror, hero, villain. You are all things, Revan, and yet you are nothing. In the end you belong to neither the light nor the darkness. You will forever stand alone."
Matzika
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Female
Posts: 1313


my immortality


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #10 on: February 07, 2009, 14:33:38 pm »

Μεχρι πότε μπορούμε να ανεβάσουμε στο eTHMMY την αναφορά για την εργασία μας?Ειπε τίποτα ο κ Μήτκας?ή το άφησε στο αόριστο?
Logged
SolidSNK
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4617


free()'d and attuned


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #11 on: February 07, 2009, 14:35:41 pm »

Ουσιαστικά δλδ προέτρεπα στον αλγόριθμο μου να φτιάχνει "τουνελάκια" με τα αντίπαλα χρώματα, που δίνουν standard κινήσεις, μια στρατηγική που ακολουθώ και γω όταν πάιζω Wink
Logged

"Savior, conqueror, hero, villain. You are all things, Revan, and yet you are nothing. In the end you belong to neither the light nor the darkness. You will forever stand alone."
Wade
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 5795



View Profile WWW
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #12 on: February 07, 2009, 14:38:04 pm »

Quote from: Matzika on February 07, 2009, 14:33:38 pm
Μεχρι πότε μπορούμε να ανεβάσουμε στο eTHMMY την αναφορά για την εργασία μας?Ειπε τίποτα ο κ Μήτκας?ή το άφησε στο αόριστο?


Αυτή για τον αλγόριθμο σε φυσική γλώσσα για τους συμμετέχοντες του τουρνουά;  Αν είναι αυτό, πρέπει να το ποστάρεις σ' αυτό το τόπικ (ο κ. Μήτκας ανέφερε ότι πρέπει να γίνει ένα thread στο thmmy.gr όπου θα ποστάρουμε τους αλγορίθμους μας).  Συγκεκριμένη ημερομηνία δε θυμάμαι να είπε...

Εκτός κι αν εννοείς την αναφορά, αυτήν που παραδώσαμε γραπτά - η οποία λογικά πρέπει να έχει σταλεί μαζί με την 3η εργασία...
Logged

Matzika
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Female
Posts: 1313


my immortality


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #13 on: February 07, 2009, 20:28:03 pm »

εννοώ αυτο που λές στο πρώτο ποστ σου...Δλδ τον κώδικα σε φυσική γλώσσα που πρέπει να ανεβάσουν οι ομάδες που συμμετείχαν στο τουρνουα ώστε να προσμετρηθει το μπονους στο βαθμο...Απλα νομιζα ότι πρέπει να τον ανεβάσουμε στο eTHMMY..καθώς το τημμυ δεν είναι ο επίσημος χώρος του μαθήματος...
Logged
tiger
Θαμώνας
****
Posts: 371


View Profile
Re: [Δομές Δεδομένων] Τουρνουά Blokus - αλγόριθμοι
« Reply #14 on: February 09, 2009, 21:42:42 pm »

ο σιφουνας  Cheesy
ομαδα...β4???  δεν θυμαμαι ,δεν εβγαλαν κ τα αποτελεσματα του τουρνουα...
Στεφανου Γιωργος         Τικοπουλου Πηνελοπη

Και ο δικος  μου αλγοριθμος αρχικα εξεταζε αν υπαρχουν εγκυρες κινησεις για 5μινα κ αν υπηρχαν τοτε προχωρουσα μονο γι αυτα,αν δεν υπηρχαν ελεγχα αντιστοιχα τα 4μινα κτλ 
Για καθε εγκυρη κινηση τοποθετουσα το κομματι σε ενα ταμπλω κλωνο του τρεχοντος.
Στην συνεχεια το ιδιο γινοταν κ τις πιθανες κινησεις του επομενου στην σειρα,αντιπαλου παιχτη. Για καθε εγκυρη κινηση του αντιπαλου τοποθετουσα το κοματι σε νεο κλωνο-οπως ολοι φανταζομαι ¨) 
Τοτε εκανα την αξιολογιση της τρεχουσας κινησης  με μετρηση των δικων μας γωνιων μειον τις γωνιες τοθ αντιπαλου και αν ηταν καλυτερη της προηγουμενης ,την κρατουσα.  Οπως κ ο miltiadhs χρησιμοποιησα αλφα βητα κλαδεμα ,δηλαδη
 αν έχει εντοπιστει άλλη κίνηση που να συμφέρει τον προηγούμενο παίκτη περισσότερο σταμάτα (κλάδεμα), ενω αν η αξιολόγηση της κίνησης είναι καλύτερη από τις προηγούμενες την κρατουσα.
Η καλυτερη κινηση αποθηκευονταν σε μια τριαδα μεταβλητων-αν θυμαμαι καλα-κ λεω αν θυμαμαι καλα γιατι αναπτυξα τουλαχιστον 3 ειδη δομων αποθηκευσης αλλα τελικα δεν μπορουσα να σιγουρευτω πως λειτουργουν σωστα ,οποτε εστειλα μια πιο απλοικη προσεγκιση της δομης.  Ενδεικτικα να αναφερω πως μια απο τις δομες μου που εν τελει δεν εστειλα ,ηταν περιπου η εξης.. . για καθε εγκυρη κινηση του τρεχοντος παιχτη απο θηκευα σε μια δομη Μyset ενα setelement με ορισματα ¨΄null  στο σχημα, αυξων αριθμο=ονομα στο χ , ονομα γονιου του φυλλου στο y και την τιμη της αξιολογησης στο corner.  Για τον αντιπαλο τα ιδια κ σε μια δευτερη δομη κ επιπλεον μια τριτη δομη οπου για καθε στοιχειο την δευτερης δομης εβαζα κ ενα σ αυτην με ορισματα τετοια ωστε να μπορω να ξερω απο ποιο φυλλο του πρωτου παιχτη προηλθαν.
Αυτα πανω κατω,
Συγχωρηστε με 1) για την λακωνικοτητα αλλα δινω 4 μαθηματα αυτη τη βδομαδα..κ
Μετα δινω κ αλλα  2) για τον ενικο...αλλα πιστευω καταλαβαμε ολοι απο τον κοσμο στο τουρνουα γιατι πολλες ομαδες ειχαν ενα μονο εκπροσωπο- μαλον θα εκανε αυτος  την περισσοτερη δουλεια ; )

Δεν τα πηγε κ πολυ καλα ο παιχτης μ καθως δεν  προλαβα να εντοπισω καποια λογικα λαθη  ομως ηταν μαλον  ο ταχυτερος  ολων-τι μαλον....σιγουρα, εκ του αποτελεσματος αλλα οκ..;P  -  κ ηταν πραγματικα ευχαριστο να βλεπεις ενα παιχνιδι να τελειωνει σε δευτερολεπτα-οσοι ηταν στο τουρνουα πιστευω καταλαβαινουν : )
 
« Last Edit: February 09, 2009, 21:50:38 pm by tiger » Logged
Pages: [1] 2 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...