Dnes makĂĄm na druhĂŠm Ăşkolu na pĹedmÄt PAA. V podstatÄ se jednĂĄ o to vymyslet nÄjakou heuristiku na ĹeĹĄenĂ NP ĂşplnĂŠho problĂŠmu. A pak to zmÄĹit a napsat o tom zprĂĄvu. Tu heuristiku moc rozebĂrat nebudu, ale chci si sem poznamenat jak jsem si zautomatizoval zbÄr vĂ˝sledĹŻ. JistÄ, mohl bych to vyzobĂĄvat pĹes schrĂĄnku a dĂĄvat do excelu, ale hold jsem unixĂĄĹ a tak na to jdu pĹes roury a rĹŻznĂŠ Text Processing Commands.
KonkrĂŠtnÄ jsem mÄl binĂĄrku kterĂĄ vracĂ nÄco takovĂŠho:
14-4-5-0-4 8 8936
PotĹeboval jsem namÄĹit 3 problĂŠmy a pro kaĹždĂ˝ v prĹŻmÄru 5 podproblĂŠmĹŻ a u kaĹždĂŠho jsem dostal 2 rĹŻznĂŠ vĂ˝sledky (s heuristikou a bez nĂ). BohuĹžel ten pĹedpĹipravenĂ˝ template co je na strĂĄnkĂĄch pĹedmÄtu nemÄl udÄlanĂŠ naÄĂtĂĄnĂ hodnot ze vstupu (jinak by se to dalo jeĹĄtÄ vĂce zautomatizovat), ale hodnoty, kterĂŠ se poÄĂtaly byly zadrĂĄtovanĂŠ pĹĂmo uvnitĹ. No nic, zaÄal jsem tĂm, Ĺže jsem si udÄlal copy&paste vĹĄech zadĂĄnĂ a pomocĂ jednoduchĂŠho regulĂĄrnĂho vĂ˝razu jsem z toho udÄlal tohle:
unsigned full_buckets[MAXBCKTS] = {14,4,5,0,4};
Pak jsem postupnÄ odkomentovĂĄval jednotlivĂŠ ĹĂĄdky a udÄlal si tak binĂĄrky pro jednotlivĂŠ zadĂĄnĂ. Ty jsem pak pustil v jednĂŠ dĂĄvce vĹĄechny:
for binarka in bin/*1.*
do $binarka >> vysledky/BFS_2.txt
done
for binarka in bin/*2.*
do $binarka >> vysledky/BFS_2.txt
done
for binarka in bin/*3.*
do $binarka >> vysledky/BFS_3.txt
done
Jen dodĂĄm Ĺže jednotlivĂŠ binĂĄrky se menovali kyble1.1, kyble1.2 atd. ZatĂmco tohle pĂĹĄu tak to prohledĂĄvĂĄnĂ do ĹĄĂĹky bÄĹžĂ. ObdobnÄ sem to udÄlal pro heuristiku, ale ta bÄŞà vĹždy jen asi sekundu, takĹže tam to nenĂ takovĂ˝ problĂŠm udÄlat pĹĂmo ruÄnÄ. JenĹže teÄ jeĹĄtÄ jak to dostat do jednĂŠ tabulky, kde na jednom ĹĂĄdku budou vĂ˝sledky jak z heuristiky tak z BFS? JednoduĹĄe – prĂĄvÄ pomocĂ tÄch shellovĂ˝ch utilit:
paste BFS_1.txt heur_1.txt | \
expand | \
tr --squeeze-repeats ' ' | \
cut -f 1,2,3,5,6 -d ' '
Utilita na prvnĂm ĹĂĄdku prostÄ vypĂĹĄe vĹždy ĹĂĄdek prvnĂho a vedle nÄj (tedy ne pod nÄj) vypĂĹĄe ĹĂĄdek druhĂŠho souboru. Expand na druhĂŠm ĹĂĄdku jen z tabulĂĄtorĹŻ udÄlĂĄ mezery a vĂce mezer za sebou jsou pomocĂ tr na tĹetĂm ĹĂĄdku pĹeloĹženy na jednu jedinou. To je potĹeba pro cut, kterĂ˝ uĹž prostÄ jen vypĂĹĄe urÄitĂŠ sloupce, pĹiÄemĹž delimiter je mezera.
Napsat komentář
Pro přidávání komentářů se musíte nejdříve přihlásit.