Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό pefraimi » 07 Δεκ 2020, 10:09

γεια σας εχω ενα προβλημα,ενω στον υπολογιστη μου στην ασκηση 3 δουλευει κανονικα οταν την παραδεινω λεει οτι δεν κανει sort τον πινακα και και αποτυχαινει καποια κρυφα τεστ,εχετε καμια ιδεα να μοθ προτεινετε?(κανει sort στον υπολογιστη δεν κανει στην παραδωση ονλαιν)


Έριξα μια ματιά στον κώδικα που έχεις υποβάλει. Δεν ταξινομεί σωστά τον πίνακα.

Σημείωση: Η μέθοδος sort θα δέχεται ένα έτοιμο αντικείμενο array ως παράμετρο. Δεν χρειάζεται
(ούτε είναι σωστό) να δημιουργήσετε δικό σας αντικείμενο array.

Επιπλέον, οι βοηθητικές μέθοδοι swap, comp, κτλ. είναι ήδη υλοποιημένες στην κλάση
MyArray και υπάρχουν για το αντικείμενο array. Δεν χρειάζεται (ούτε είναι σωστό)
να τις υλοποιήσετε.
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό lets_go_get_it » 07 Δεκ 2020, 21:08

Κύριε καλησπέρα. Θέλω να σας ρωτήσω αν στη κλάση MySort μπορώ εκτός απο τη μέθοδο sort που επεξεργάζομαι να προσθέσω και άλλη μέθοδο, όπως στα παραδείγματα στις διαφάνειες που χρησιμοποιείται η βοηθητική μέθοδος partition.
lets_go_get_it
Newbie
 
Δημοσιεύσεις: 2
Εγγραφή: 08 Ιαν 2020, 17:57

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό pefraimi » 07 Δεκ 2020, 21:45

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


Ναι, μπορείτε να υλοποιήσετε όσες επιπλέον μεθόδους θέλετε, ακόμη και ολόκληρες κλάσεις αν χρειαστεί.
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό tryf » 08 Δεκ 2020, 15:12

έχω κολλήσει στην 3 όλες οι Quick merge kai Quick sort είναι με array και 2 μεταβλητές ορισμένες() αλλά εσείς μας δώσατε με μόνο ένα array άρα ΔΕΝ μπορούμε να ξανά καλέσουμε την συνάρτηση όπως κάνουν όλες οι Quick sort, μπορείτε να δώσετε μια βοήθεια σε αυτό το πρόβλημα, ευχαριστώ για τον χρόνο σας!
tryf
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 11 Ιαν 2020, 23:51

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό pefraimi » 08 Δεκ 2020, 15:42

έχω κολλήσει στην 3 όλες οι Quick merge kai Quick sort είναι με array και 2 μεταβλητές ορισμένες() αλλά εσείς μας δώσατε με μόνο ένα array άρα ΔΕΝ μπορούμε να ξανά καλέσουμε την συνάρτηση όπως κάνουν όλες οι Quick sort, μπορείτε να δώσετε μια βοήθεια σε αυτό το πρόβλημα, ευχαριστώ για τον χρόνο σας!


Στο ερώτημα 3 πρέπει να υλοποιηθεί μια αποδοτική μέθοδος ταξινόμησης που επιτρέπεται να εκτελεί συγκρίσεις και ανταλλαγές στοιχείων.
Μπορείτε να καλέσετε μεθόδους, αν θέλετε μπορείτε να καλέσε και αναδρομικά μια μέθοδο. Δεν υπάρχει κάποιος περιορισμός πέρα από το συνολικό πλήθος των συγκρίσεων.
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό ioankout19 » 08 Δεκ 2020, 19:03

Στην 3η Άσκηση έχω κάνει μια υλοποίηση της HeapSort η οποία είναι πολυπλοκότητας O(nlogn). Εντός της υλοποίησης χρειάζεται 2 τουλάχιστον φορές η comp αλλιώς ο αλγόριθμος θα είναι λάθος. Παρόλα αυτά κατά τον έλεγχο μου εμφανίζει ότι έχω υπερβεί τον αριθμό των συγκρίσεων. Μπορώ με κάποιον τρόπο να βελτιώσω τον αλγόριθμο ή θα πρέπει να κάνω υλοποίηση άλλου αλγορίθμου(πχ merge); Χωρίς παράλληλα να επιτρέπεται η get();
ioankout19
Newbie
 
Δημοσιεύσεις: 2
Εγγραφή: 09 Σεπ 2020, 13:00

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό pefraimi » 08 Δεκ 2020, 20:38

Στην 3η Άσκηση έχω κάνει μια υλοποίηση της HeapSort η οποία είναι πολυπλοκότητας O(nlogn). Εντός της υλοποίησης χρειάζεται 2 τουλάχιστον φορές η comp αλλιώς ο αλγόριθμος θα είναι λάθος. Παρόλα αυτά κατά τον έλεγχο μου εμφανίζει ότι έχω υπερβεί τον αριθμό των συγκρίσεων. Μπορώ με κάποιον τρόπο να βελτιώσω τον αλγόριθμο ή θα πρέπει να κάνω υλοποίηση άλλου αλγορίθμου(πχ merge); Χωρίς παράλληλα να επιτρέπεται η get();


Αν έχεις ελέγξει την υλοποίησή σου και δεν κάνει περιττά βήματα και παρόλα αυτά υπερβαίνει τα όρια, τότε δοκιμάσε άλλο αλγόριθμο ταξινόμησης.
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό ioankani » 10 Δεκ 2020, 22:05

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

***Error***
Error: Could not find or load main class prog
Caused by: java.lang.ClassNotFoundException: prog

Τι μπορώ να κάνω για να το λύσω?
ioankani
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 07 Φεβ 2020, 01:47

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό pefraimi » 11 Δεκ 2020, 13:04

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

***Error***
Error: Could not find or load main class prog
Caused by: java.lang.ClassNotFoundException: prog

Τι μπορώ να κάνω για να το λύσω?


Πράγματι συνέβη και σε άλλους φοιτητές. Δεν υπάρχει πρόβλημα στην εργασία,
ο job server που αναλαμβάνει τον έλεγχο των ερωτημάτων δεν άντεξε μάλλον
τον φόρτο του regrade.

Θα πρέπει απλά να γίνει regrade η εργασία των φοιτητών που συνάντησαν αυτό το πρόβλημα.
Μπορείτε να το προκαλέσετε υποβάλλοντας ξανά τις ίδιες απαντήσεις ή θα το κάνουμε
εμείς σταδιακά για όλα τις εργασίες που έχουν υποβληθεί.
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό DimPap » 11 Δεκ 2020, 21:17

Στην ερωτηση 1 καθε φορα που γραφω τον κωδικα και κανω ελεγχο, μου το σβηνει τελειως και βγαζει το ιδιο μηνυμα με τον συναδελφο πιο πανω!!
Επισης σε αυτην την ερωτηση δεν υπαρχει το ''reset answer''
DimPap
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 05 Δεκ 2020, 18:29
Φοιτητής ΗΜΜΥ: Ναι

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό andreass » 11 Δεκ 2020, 22:42

DimPap έγραψε:Στην ερωτηση 1 καθε φορα που γραφω τον κωδικα και κανω ελεγχο, μου το σβηνει τελειως και βγαζει το ιδιο μηνυμα με τον συναδελφο πιο πανω!!
Επισης σε αυτην την ερωτηση δεν υπαρχει το ''reset answer''

Λόγω επαναβαθμολόγησης υπήρξε τεράστιος φόρτος εργασίας στον server. Πλέον το ζήτημα για τις νέες υποβολές έχει λυθεί.
Για όσους έχουν βαθμολογηθεί οι κώδικες τους και το βλέπουν θα ξαναγίνει η διαδικασία σταδιακά και θα εμφανιστεί πάλι η προηγούμενη βαθμολογία, εναλλακτικά θα μπορούσατε να υποβάλετε τους ίδιους κώδικες.
andreass
Newbie
 
Δημοσιεύσεις: 28
Εγγραφή: 30 Ιουν 2012, 12:18

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό efi_s » 16 Δεκ 2020, 12:10

Καλημέρα, στην άσκηση 5 ενώ έχω δοκιμάσει να κάνω αναζήτηση παρεμβολής και με τους δύο τρόπους που έχουμε διδαχθεί,
συνεχίζει να μου βγάζει ότι έχω ξεπεράσει το όριο των επαναλήψεων. Πού μπορεί να κάνω λάθος;
Σας ευχαριστώ εκ των προτέρων
efi_s
Newbie
 
Δημοσιεύσεις: 2
Εγγραφή: 14 Ιαν 2020, 18:37

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό andreass » 16 Δεκ 2020, 12:59

Παιδιά δύο παρατηρήσεις.

1. Πρέπει να χρησιμοποιείται την comp/compValue και την get όσο το δυνατόν λιγότερες φορές. Αυτό μπορείτε να το πετύχετε με το να μην κάνετε περιτά βήματα (όπως επιλέον if κλπ) καθώς και με το να αποθηκεύεται προσωρινά σε μια μεταβλητή τα αποτελέσματα των παραπάνω μεθόδων ώστε να μην χρειαστεί να τα καλείτε συνεχώς.

2. Επειδή έχει αναφερθεί από αρκετούς και πιθανώς να ευθύνεται ο τρόπος που το έγγραψα στην διαφάνεια, στην εργασία 5 με την παρεμβολή θα πρέπει όταν υπολογίζεται το pos είτε να γίνει casting είτε να γίνεται πρώτα ο πολλαπλασιασμός και μετά η διαίρεση (οι δύο τρόποι παρουσιάζονται παρακάτω).

Κώδικας: Επιλογή όλων
    pos =(int) (lo + (((double)(hi-lo)/(h-l))*(value-l)));
 
 
    pos =lo + ( ( (hi-lo)*(value-l) )/(h-l) );



Για ποιον όμως λόγω χρειάζεται να γίνει αυτό; Ενώ όλα τα στοιχεία είναι ακέραιοι πρέπει να γίνει διαίρεση με αριθμούς οι οποίοι δεν διαιρούνται ακριβώς (εκτός αν εκτελεστεί ο πολλαπλασιασμός πρώτα). Οπότε πρέπει να γίνει double αρχικά ώστε να μην χάνουμε πληροφορία και μετά πάλι int. Με ένα απλό παράδειγμα:

(((hi-lo)/(h-l))*(value-l))= (35/10)*2 = 3*2=6

Ο υπολογιστής μας δίνει 6 ενώ το αποτέλεσμα που περιμέναμε είναι 7. Αυτό γίνεται γιατί εφόσον διαιρούνται δύο ακέραιοι δίνεται μόνο το ακέραιο μέρος της διαίρεσης. Οπότε ή θα πρέπει προς στιγήν αυτό να γίνει double, είτε να γίνει ο πολλαπλασιασμός πρώτα και μετά η διαίρεση. Σας παραπέμπω στην διαφάνεια 10 εργαστήριο 1 όπου αναφέρεται το casting.
andreass
Newbie
 
Δημοσιεύσεις: 28
Εγγραφή: 30 Ιουν 2012, 12:18

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό pana bak » 16 Δεκ 2020, 13:54

Καλησπέρα σας,
στην Ερώτηση 1 έχω εφαρμόσει ποικίλους αλγορίθμους (σε μερικούς από αυτούς έχω προσθέσει ακόμη και ορισμένες βιβλιοθήκες για την αξιοποίηση κάποιων εντολών) και εμφανίζει σε όλους δυστυχώς το παρακάτω αποτέλεσμα. Αυτήν τη στιγμή στο Moodle βρίσκεται ο απλούστερος κώδικας που έχω συνθέσει για το πρόβλημα. Θα ήθελα να ρωτήσω, αν καθίσταται δυνατόν, να υποδείξετε ποια είναι τα υπόλοιπα hidden tests στα οποία ο κώδικας δεν ανταποκρίνεται σωστά ή το λαθος βρίσκεται στη λογική σχεδίασης του αλγορίθμου.
Σας ευχαριστώ.
Συνημμένα
Error.png
pana bak
Newbie
 
Δημοσιεύσεις: 3
Εγγραφή: 10 Φεβ 2018, 19:43

Re: Αλγόριθμοι και Δομές Δεδομένων [2020-21]: Εργασία 2

Δημοσίευσηαπό andreass » 16 Δεκ 2020, 19:00

Καλησπέρα, στα hidden test γίνονται διεργασίες με πολλαπλά pop και push τα οποία μπορεί να φτάνουν στα όρια του πίνακα. Θα πρότεινα να ελέγξεις αν μετά από κάθε pop ή push μειώνεις ή αυξάνεις τον δείκτη top. ;) Εύχομαι να μπόρεσα να σε βοηθήσω.
andreass
Newbie
 
Δημοσιεύσεις: 28
Εγγραφή: 30 Ιουν 2012, 12:18

Προηγούμενη

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 64 επισκέπτες