Εκπροσωπώντας τον κωδικό αλγεβρικά

ψήφοι
5

Έχω μια σειρά από μικρά αλγορίθμων που θα ήθελα να γράψω σε ένα χαρτί. Είναι σχετικά μικρή και περιεκτική. Ωστόσο, αντί της γραφής τους ψευδο-κώδικα (à la Cormen ή ακόμα και Knuth), θα ήθελα να γράψω μια αλγεβρική παράσταση από αυτά (πιο γραμμική και καλύτερη απόδοση LaTeX). Ωστόσο, δεν μπορώ να βρω πόρους ως προς την καλύτερη παράσταση γι 'αυτό, αν υπάρχει κάτι: π.χ. πώς μπορώ να αντιπροσωπεύουν ένα βρόχο; Αν? Η προσθήκη μιας πλειάδας σε μια λίστα;

Έχει κάποιος από εσάς που αντιμετωπίζουν αυτό το πρόβλημα, και με κάποιο τρόπο να λυθεί;

Ευχαριστώ.

EDIT : Ευχαριστώ, οι άνθρωποι. Νομίζω ότι έκανα μια κακή δουλειά σε διατυπώνοντας το ερώτημα. Εδώ πηγαίνει πάλι, ελπίζοντας ότι σαφέστερο κάνει: ποιο είναι το κοινό συμβολισμό για να μιλάμε για βρόχους και ρήτρες αν-τότε σε μια μαθηματική σημειογραφία; Για παράδειγμα, μπορώ να χρησιμοποιήσω $acc \leftarrow acc \cup \langle i,i+1 \rangle$για να εκπροσωπεί την μέθοδο «add» από τη λίστα.

Δημοσιεύθηκε 28/01/2010 στις 20:50
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
0

Κάτι σαν αυτό το δικτυακό τόπο περιγράφει;

Απαντήθηκε 28/01/2010 στις 20:57
πηγή χρήστη

ψήφοι
1

Μπορείτε να ρίξετε μια ματιά σε Haskell. Haskell Μορφές και στο λατέξ, έχει ένα ωραίο αλγεβρικό σύνταξη, και μπορείτε ακόμη και να καταρτίζουν φάκελο latex με Haskell σε αυτό, με την προϋπόθεση ο κωδικός είναι τυλιγμένο σε \begin{code}και \end{code}. Δείτε εδώ: http://www.haskell.org/haskellwiki/Literate_programming . Υπάρχουν πιθανώς παιδεία εργαλεία προγραμματισμού για άλλες γλώσσες.

Απαντήθηκε 28/01/2010 στις 20:59
πηγή χρήστη

ψήφοι
2

Θα αντιγράψετε Knuth. Λίγοι ξέρουν πώς να επικοινωνούν καλύτερα από αυτόν σε ένα περιβάλλον επιστήμη των υπολογιστών.

Απαντήθηκε 28/01/2010 στις 21:00
πηγή χρήστη

ψήφοι
-1

APL ; Το μόνο πρόβλημα είναι ότι λίγοι άνθρωποι μπορούν να το διαβάσουν.

Απαντήθηκε 28/01/2010 στις 21:00
πηγή χρήστη

ψήφοι
8

Μην το κάνετε αυτό. Είστε αποκλίνουν από αυτό που οι άνθρωποι περιμένουν να δουν όταν διαβάζουν ένα έγγραφο σχετικά με αλγόριθμους. Θα πρέπει να ακολουθήσετε την αναμενόμενη πρακτικές? οι ιδέες σας είναι πιο πιθανό να πάρει την προσοχή που τους αξίζει. Όταν στη Ρώμη, όπως και οι Ρωμαίοι κάνουν.

Μορφοποίηση του κώδικα (ή ψευδοκώδικα καθώς μπορεί να είναι) σε ένα LaTeXed χαρτί είναι πολύ εύκολη. Βλέπε, για παράδειγμα, διαμόρφωση κώδικα σε LaTeX .

Απαντήθηκε 28/01/2010 στις 21:03
πηγή χρήστη

ψήφοι
1

Lisp που ξεκίνησε ως μια μαθηματική σημειογραφία ενός μοντέλου υπολογιστών, έτσι ώστε ο διδάσκων θα έχει καλύτερο εργαλείο από μηχανές turing. Με ατύχημα, αποδεικνύεται ότι μπορεί να εφαρμοστεί σε συγκρότημα - ως εκ τούτου Lisp, η γλώσσα προγραμματισμού γεννήθηκε.

Αλλά δεν νομίζω ότι αυτό είναι πραγματικά αυτό που ψάχνετε, αφού το μοντέλο υπολογιστή που Lisp περιγράφει δεν έχει βρόχους: αναδρομή χρησιμοποιείται αντ 'αυτού. Η σύνταξη προέρχεται από άλγεβρα όπου τιράντες υποδηλώσει αξιολογήσει-αυτό-και-υποκατάστατο-το-αποτέλεσμα. Πράγματι, το μοντέλο ψεύδισμα της computing είναι ουσιαστικά η υποκατάσταση - τι άλγεβρα είναι ουσιαστικά.

Πράγματι, οι περισσότερες λειτουργικές γλώσσες όπως η Lisp, Haskell και Erlang που προέρχονται από τα μαθηματικά. Haskell είναι στην πραγματικότητα ένα αποτέλεσμα που αποδεικνύει ότι λογισμός λάμδα μπορεί να χρησιμοποιηθεί για την υλοποίηση συστημάτων τύπου. Έτσι, Haskell, όπως Lisp γεννήθηκε από καθαρά μαθηματικά. Αλλά και πάλι, η σύνταξη δεν είναι αυτό που θα μπορούσε πιθανότατα να χρησιμοποιηθεί για να.

Μπορείτε βεβαίως να εξηγήσει Lisp και Haskell σύνταξη για τους μαθηματικούς και θα την αντιμετωπίσει ως ένα «παιχνίδι». δομές γλώσσας, όπως θηλιές, αναδρομή και των συνθηκών μπορεί να αποδειχθεί από τους κανόνες του παιχνιδιού και όχι στα τυφλά εφαρμοστεί, όπως και σε άλλες γλώσσες. Αυτό θα σας οδηγήσει στη σφαίρα της combinatronics, άλλο κλάδο των μαθηματικών. Πράγματι, σε combinatronics, ακόμη και η έννοια των αριθμών μπορεί να κατασκευαστεί από τους κανόνες του παιχνιδιού, αντί να είναι ένας ντόπιος μέρος της γλώσσας (google Εκκλησία αριθμητικά).

Έτσι, ρίξτε μια ματιά στο Lisp / Σχέδιο, Erlang και Haskell, αν θέλετε. Erlang έχει ειδικά σύνταξη κοντά σε ό, τι θέλετε:

add(a,b) -> a + b

Αλλά σύστασή μου είναι να γράψω σε C-όπως ψευδοκώδικα. Είναι το είδος του ελάχιστου κοινού παρονομαστή στις γλώσσες προγραμματισμού. Έχει μια σύνταξη που είναι αρκετά εύκολο να κατανοήσουν και καθαρό. Και η σύνταξη της συνάρτησης προέρχεται ακόμη και από λειτουργίες στα μαθηματικά. Να θυμάστε f(x);

Ως συν, οι μαθηματικοί που χρησιμοποιούνται για το γράψιμο C, οι στατιστικολόγοι που χρησιμοποιούνται για το γράψιμο C (αν και γενικά προτιμούν R), οι φυσικοί που χρησιμοποιούνται για την γραφή C, οι προγραμματιστές που χρησιμοποιείται για τουλάχιστον κοιτάζοντας C (Ξέρω λίγα που έχω ποτέ άγγιξε C).

Στην πραγματικότητα, το μηδέν αυτό. Θα αναφέρω ότι το κοινό-στόχο σας είναι στατιστικολόγους. Γράψτε το R

Απαντήθηκε 28/01/2010 στις 21:47
πηγή χρήστη

ψήφοι
7

Θα δούμε αν-εκφράσεις στη μαθηματική σημειογραφία αρκετά συχνά. Το συνηθισμένο πράγμα για έναν βρόχο είναι μια αναδρομική σχέση , ή ισοδύναμα, μια συνάρτηση ορίζεται αναδρομικά.

Εδώ είναι το πώς η λειτουργία Ackermann ορίζεται στην Wikipedia, για παράδειγμα:

Α (m, n) = n + 1, εάν m = 0?  Α (m-1, 1) εάν m> 0 και το η = 0?  και Α (m-1, Α (m, n-1)), εάν m> 0 και η> 0.

Αυτή η εικόνα είναι ωραία γιατί αισθάνεται μαθηματικών σε γεύση και ακόμα θα μπορούσατε να πληκτρολογήσετε με σαφήνεια σε όλες σχεδόν ακριβώς όπως γράφεται και έχουν εφαρμογή. Δεν είναι πάντα δυνατό να επιτευχθεί αυτό.

Άλλες μαθηματικές συμβολισμοί που αντιστοιχούν σε βρόχους περιλαμβάνουν Σ-συμβολισμός για άθροιση και set-Builder σημειογραφία .

Ελπίζω ότι αυτό απαντά στην ερώτησή σας! Αλλά αν ο στόχος σας είναι να περιγράψει πώς κάτι γίνεται και να έχει κάποιος καταλάβει, νομίζω ότι είναι μάλλον λάθος να υποθέσουμε ότι οι μαθηματικοί θα προτιμούσαν να δουν εξισώσεις. Δεν νομίζω ότι είναι εναλλάξιμα εργαλεία (παρά Turing ισοδυναμίας). Αν ο αλγόριθμος σας περιλαμβάνει ευμετάβλητος δομές δεδομένων, διαδικαστικό κώδικα πιθανότατα θα είναι καλύτερη από τις εξισώσεις για την εξήγηση αυτή.

Απαντήθηκε 29/01/2010 στις 00:21
πηγή χρήστη

ψήφοι
2

Ένα σύμβολο για γενική βρόχοι δεν υπάρχει? συνήθως θα χρησιμοποιήσετε το συντελεστή άθροισης . «αν» εκπροσωπείται χρήση επιπτώσεις , και να «προσθέσει μια πλειάδα σε μια λίστα» που θα χρησιμοποιήσετε ένωσης .

Ωστόσο , σε γενικές γραμμές, ένα κομμάτι της πολυλογία δεν είναι απαραίτητα κάτι κακό - μερικές φορές, ειδικά για πολύπλοκους αλγόριθμους, το καλύτερο είναι να το διευκρινίσει σε απλά αγγλικά, χρησιμοποιώντας παραδείγματα και διαγράμματα. Αυτό είναι διπλά ισχύει και για μη-προγραμματιστές.

Σκεφτείτε το: όταν διαβάζετε ένα μαθηματικό κείμενο-βιβλίο για τον αλγόριθμο του Ευκλείδη για το ΠΔΠ, ή το κόσκινο του Ερατοσθένη, πώς είναι γραμμένο; Συνήθως, ο ίδιος ο αλγόριθμος είναι σε πεζό λόγο, ενώ η απόδειξη του αλγορίθμου είναι όπου τα μαθηματικά σύμβολα βρίσκονται.

Απαντήθηκε 29/01/2010 στις 02:00
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more