[UUUI] 1. laboratorijska vježba - 2020/2021
Lusy
Kako najlakse sortirati po cijeni pa abecedno (Java) ?
Haki
MGJ Napravis komparator (ili nek ti Node implementira Comparable) koji će usporediti cijene sa Double.compare() i to vratiti, a ako su cijene jednake onda vraća vrijednost usporedbe imena stanja
Haki
Valentino bfs 181366, ucs 181218
bjunolulz
Kako bi nasao path ako nisam koristio nikakvu strukturu za cvor u pythonu. Prijelaze citam iz dictionarya i nemam roditelje.
dobro
bjunolulz Mislim da moraš imat barem pointer na parent da bi mogao ispisat path
bjunolulz
dobro da i mislio sam da sam sjebao
nnn
Kako ste u Pythonu 3×3 za bfs i ucs smanjili vrijeme izvođenja?
Za open/queue koristim collections.deque a za visited koristim set al opet mi je vrijeme cca 2 min
Diego
dinoo ucs s heapq za open radi u par sekundi
Uchenikowitz
dinoo koristi priorityQueue za opened da ne sortas i dictionarye za opened/closed skupove, mozes radit {“node.name”: “node”}, a mozes i {“node”: “node”} ako overridas hash funkciju, inace ti nece znat hesirat klasu Node ako ju imas. Znaci za opened odrzavas dvije strukture (priorityQueue i dict)
gladiator
Diego Kako koristiš heap u A* algoritmu? Ne postoji efektivni način za mijenjanje vrijednosti elementa u heap-u, a da se ne poziva funkcija heapify()
Diego
gladiator ne trebaš mijenjati, samo sva stanja trpaš u heap i onda kad pop() sljedeće stanje na heapu trebaš imati while petlju koja će ti pop() stanja dok ne naiđe na stanje koje nije u visited
tako ako imaš više istih stanja uvijek će ti na heapu prvo pop() s najmanjim putem moraš se sam pobrinut da ostala ista stanja s većim putem zanemariš
Uchenikowitz
Imam sljedeci problem:
=== EVALUATION ===
== A-STAR ==
Passed 5 / 5 tests.
== BFS ==
Passed 2 / 3 tests.
- Failed test: BFS
- Command run: python solution.py –ss 3×3_puzzle.txt –alg bfs
Mismatch with field: PATH
-> Obtained output:
876_543_21x => 876_54x_213 => 876_5×4_213 => 8×6_574_213 => x86_574_213 => 586_x74_213 => 586_274_x13 => 586_274_1×3 => 586_2×4_173 => 586_24x_173 => 586_243_17x => 586_243_1×7 => 586_2×3_147 => 5×6_283_147 => 56x_283_147 => 563_28x_147 => 563_2×8_147 => 5×3_268_147 => x53_268_147 => 253_x68_147 => 253_168_x47 => 253_168_4×7 => 253_168_47x => 253_16x_478 => 253_1×6_478 => 2×3_156_478 => x23_156_478 => 123_x56_478 => 123_456_x78 => 123_456_7×8 => 123_456_78x
-> Expected output:
876_543_21x => 876_543_2×1 => 876_543_x21 => 876_x43_521 => x76_843_521 => 7×6_843_521 => 746_8×3_521 => 746_83x_521 => 746_831_52x => 746_831_5×2 => 746_831_x52 => 746_x31_852 => x46_731_852 => 4×6_731_852 => 436_7×1_852 => 436_71x_852 => 43x_716_852 => 4×3_716_852 => 413_7×6_852 => 413_756_8×2 => 413_756_82x => 413_75x_826 => 413_7×5_826 => 413_725_8×6 => 413_725_x86 => 413_x25_786 => x13_425_786 => 1×3_425_786 => 123_4×5_786 => 123_45x_786 => 123_456_78x
Sve je isto samo se path razlikuje, napisali su u obavijest da nece gledat path kod UCS i A*, nisu nista spomenuli za BFS. Ima li netko da mu se isto ovo dogada?
Me1
Učečuču jesi mozda saznao u cemu je problem?
Sulejman
Ducky kak si to na kraju rijesio?
Wayk
Tip za autograder:
- za smrtnike (kao ja) kome ne prolazi nesto dosta brzo mozete smanjiti vrijednost varijable
max_time
naautograder.py:363
da ne čekate svaki put 2 min da vam izvrti to a zanimaju vas ostali testovi
Sulejman Za optimiranje sam za svaki node prvo izracunao pravu udaljenost sa UCS
.
Traje dugo (predugo cini se) ali cini se kao najbezbolnije a i kažu da neće skidat bodove ako ne radi za 3×3 (piše u obavijesti nekoj)
@Joji inače ima odličnu ideju kako to bolje implementirati
Joji Prošle godine sam optimističnost riješio tako što sam za svako ciljno stanje pokrenuo Dijkstrin algoritam koji računa udaljenosti od ciljnog stanja do svih ostalih i onda sam na temelju tih udaljenosti radio provjere optimističnosti za svako stanje. U Pythonu mi se izvrtilo za cca 4 sekunde na 3×3 zadatku.
S ovim ima malo zafrkancije jer treba obrnuti relaciju roditelj - dijete između nodova da možes traversat usmjereni graf unazad
ErnestHemingway
Ima li netko da je koristio pathmax korekciju?
Retard00
Treba li komentirat kod ili je “uredno pisat” dovoljno?
KingGeedorah
Za ove što su radili u pythonu, kako uklanjate element iz heapq-a? Vidim da heapq nema svoju metodu za to, jedino da se koristi remove kao nad listom pa da se opet poziva heapify, što opet uzme puno vremena
nnn
King Geedorah
ja koristim queue.PriorityQueue
, on interno koristi heapq
(source) i meni je bio laksi (razumljiviji)
za heapq: heapq.heappop(heap) https://docs.python.org/3/library/heapq.html
KingGeedorah
dinoo heappop uklanja najmanji tj. prvi element, ja sam mislio na općenito brisanje elementa bilo gdje u strukturi
mariak
Jel iko imao problem da izvodenje zaglavi kad se racuna optimisticnost za 3×3? Smanjila sam vrijeme max_time u kodu autogradera na 10 sekundi i svejedno ovdje zaglavi
(a ako stavim da se optimisitcnost uopce ne racuna za 3×3, sve mi normalno radi)
Gocc
kaiak ista stvar, javi ako skuzis
lucylu
kaiak takoder isti problem
lovro
Jel postoje negdje upute za pokretanje autogradera, koje argumente moramo predati?
Me1
l123 imas u README