Hash Code 2019 – Photo slideshow

Gruppe 10

Aufgabenstellung

Die ausgewählte Problemstellung ist von Googles Programmierwettbewerb Hash Code übernommen und soll dort in 4er-Teams innerhalb von vier Stunden bearbeitet werden. Das heißt, in dieser Zeit sollen möglichst viele Punkte für die Lösung NP-schwerer Probleme erreicht werden.

Als Angabe wird die Aufgabe in einem PDF-Dokument erklärt. Als Eingabe wird eine Textdatei mit Tag-Informationen fiktiver Fotos eingelesen. Diese sollen dann neu arrangiert und deren Indizes als Text ausgegeben werden. Je nach Anordnung der Fotos können unterschiedlich viele Punkte erreicht werden.

Ergebnisse

siehe auch: Präsentation (PDF)

Zu dieser Problemstellung konnten sowohl algorithmische Verbesserungen als auch klassische Optimierungstransformationen angewandt werden. Zuerst wurde ein Algorithmus in Python entworfen, der möglichst viele Punkte und annehmbarer Zeit erreicht. Schließlich wurde dieser in C nachimplementiert und effizienter gemacht.

In der C-Implementierung konnten die CPU-Zyklen der Instanz c_memorable_moments.txt (Beispiel mit 1000 Fotos), kompiliert mit dem GCC-Flag -Ofast, von 575 Millionen auf 314 Millionen reduziert werden.

Implementierung

In der Verzeichnissen java, python und c sind die jeweiligen Implementierungen zu finden:
[ICO]NameLast modifiedSizeDescription

[DIR]Parent Directory  -  
[DIR]c/28-Jan-2020 14:28 -  
[   ]hashcode2019_qualification_task.pdf28-Jan-2020 14:28 147K 
[DIR]input_qualification_round_2019/28-Jan-2020 14:28 -  
[DIR]java/28-Jan-2020 14:27 -  
[   ]presentation.pdf28-Jan-2020 14:28 480K 
[DIR]python/28-Jan-2020 14:28 -  

Apache/2.2.22 (Debian) DAV/2 mod_fcgid/2.3.6 PHP/5.4.36-0+deb7u3 mod_python/3.3.1 Python/2.7.3 mod_ssl/2.2.22 OpenSSL/1.0.1e mod_perl/2.0.7 Perl/v5.14.2 Server at www.complang.tuwien.ac.at Port 80