
Ας υποθέσουμε ότι μπορεί να σηκώσει 15 κιλά και έχει τα εξής 5 αντικείμενα για να επιλέξει:
σύγχρονο ηλεκτρονικό υπολογιστή αξίας 1.000 ευρώ, 1 κιλό
επίχρυση ταμπακέρα αξίας 2.000 ευρώ, 1 κιλό
φθηνό κινέζικο βάζο αξίας 2.000 ευρώ, 2 κιλά
πλάκες χρυσού αξίας 4.000 ευρώ, 12 κιλά
πίνακας ζωγραφικής αξίας 10.000 ευρώ, 4 κιλά
Εσείς ποια αντικείμενα θα παίρνατε; Σιγουρα τις πλάκες χρυσού και τον πίνακα ζωγραφικής αλλά δυστυχώς υπερβαίνουν το όριο των 15 κιλών. Mε μία δεύτερη σκέψη βλέπουμε ότι συμφέρει να πάρουμε τον πίνακα ζωγραφικής, την ταμπακέρα και το κινέζικο βάζο συνολικής αξίας 14.000 ευρώ και 8 κιλά μόλις. Αλλά πως είμαστε σίγουροι ότι ελέγξαμε όλους τους πιθανούς συνδυασμούς;
Φυσικά όλους τους υπολογισμούς τους έκανε στο netbook που κουβαλάει πάντα μαζί του και έχει προγραμματίσει τέτοιες εφαρμογές για τις δύσκολες στιγμές.

Kαι ξεκινώντας από αυτό το πρόβλημα είπα να μεταγράψω τον κώδικα που έχω από fortran (και λίγη C) στην πολλά συζητούμενη python. Eπειδή όμως η βιβλιοθηκή αυτή περιέχει κώδικα από διάφορες εφαρμογές είπα να την ονομάσω knapsack. Είναι ακόμη σε alpha στάδια (δηλαδή δεν την έχω τεστάρει καθόλου) οπότε μη δοκιμάσετε να τη χρησιμοποιήσετε για να λύσετε προβλήματα, πριν δοκιμάσετε ότι λειτουργεί όπως θέλετε.

Περιλαμβάνει προς στιγμή:
blend.py: Μερικές blending functions για παρεμβολή.
count.py: Mετράει, αφαιρεί, ταξινομεί στοιχεία σε μια λίστα.
geometry.py: Υπολογιστική γεωμετρια, Bezier curves, splines, κλπ.
grid.py: Δημιουργία πλέγματος.
knapsack.py: Ό,τι δεν ταίριαζε αλλού, μαζί με έναν αλγόριθμο για τη λύση του παραπάνω προβλήματος.
matrix.py: Μερικές συναρτήσεις που δε βρήκα στο numpy.
multiscale.py: Συναρτήσεις χρήσιμες για αναπαράσταση σε πολλαπλές κλίμακες.
spectrum.py: Συναρτήσεις που αναπαριστούν φάσματα.
util.py: Δυο χρήσιμες συναρτήσεις.
Όπως είπα καθε άλλο παρά έτοιμη είναι, αλλά είπα να κάνω την αρχή. Και φυσικά υπό τη BSD (3-clause) άδεια.
Και ο σύνδεσμος φυσικά:
http://rapidshare.com/files/276773576/k ... ar.gz.html
Στο μέλλον όταν ωριμάσει θα δημιουργηθεί cvs repository στο sourceforge.
ΥΓ. Δεν έχω καμία σχέση με διαρρήκτες ή κλοπιμαία αντικείμενα
