Képviselő kód algebrailag

szavazat
5

Van néhány kisebb algoritmusok szeretnék, hogy írjon ki egy papírt. Ezek viszonylag rövid, és tömör. Azonban ahelyett, hogy az írás őket pszeudo-kód (à la Cormen sőt Knuth), szeretnék írni egy algebrai ábrázolása őket (több lineáris és jobb LaTeX rendering). Azonban nem tudok forrásokat találni, hogy a legjobb írásmód, ha van valami: pl hogyan képviselik a hurok? Ha? Kiegészítve egy tuple egy listát?

Van valakinek találkozott ezzel a problémával, és valahogy oldotta meg?

Kösz.

EDIT : Köszönöm, emberek. Azt hiszem, nem túl jól a kérdés megfogalmazását is. Itt megy újra, remélve, hogy egyértelműbb legyen: mi a közös írásmód beszélnek hurkok és ha-akkor kikötések egy matematikai jelölések? Például tudom használni $acc \leftarrow acc \cup \langle i,i+1 \rangle$, hogy képviselje az „add” módszer egy listát.

A kérdést 28/01/2010 20:50
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
0

Valami ehhez hasonló weboldalt leírja?

Válaszolt 28/01/2010 20:57
a forrás felhasználó

szavazat
1

Lehet, hogy megnézzük Haskell. Haskell formátumok jól latex, szép algebrai szintaxist, és akkor is össze egy latex fájlt Haskell benne, feltéve, hogy a kód van csomagolva \begin{code}, és \end{code}. Lásd itt: http://www.haskell.org/haskellwiki/Literate_programming . Valószínűleg írástudó programozási eszközök más nyelveken.

Válaszolt 28/01/2010 20:59
a forrás felhasználó

szavazat
2

Én másolni Knuth. Kevesen tudják, hogyan kell kommunikálni jobb, mint neki a számítástechnika környezetben.

Válaszolt 28/01/2010 21:00
a forrás felhasználó

szavazat
-1

APL ? Az egyetlen probléma az, hogy kevés ember tudja olvasni.

Válaszolt 28/01/2010 21:00
a forrás felhasználó

szavazat
8

Ne csináld ezt. Eltértek, amit az emberek várnak, hogy mikor olvastam egy újságban algoritmusok. Meg kell felelnie várható gyakorlatokat; ötleteit nagyobb valószínűséggel, hogy a figyelmet, amit megérdemelnek. When in Rome, do mint a rómaiak.

Formázása kód (vagy pszeudokódokra, mert lehet) egy Latex papír nagyon egyszerű. Lásd például formázása kódot LaTeX .

Válaszolt 28/01/2010 21:03
a forrás felhasználó

szavazat
1

Lisp indult, mint egy matematikai jelölés egy számítógépes modellt, hogy az előadó lenne jobb eszköz, mint a Turing-gép. Véletlenül kiderül, hogy végre lehessen hajtani az összeszerelés - így lisp, a programozási nyelv született.

De én nem hiszem, hogy ez valóban, amit keres, mivel a számítási modell, amely leírja selypegtek nincs hurok: a rekurzió helyett. A szintaxis származik algebra ahol zárójelek jelölik értékeli-this-és-helyettesítő-the-eredményt. Valóban, lisp modellje számítástechnikai alapvetően helyettesítés - mi algebra lényegében az.

Sőt, a legtöbb funkcionális nyelvek, mint a Lisp, Haskell és Erlang származnak matematika. Haskell valójában eredményeként annak bizonyítása, hogy a lambda kalkulus lehet használni, hogy végre típusú rendszerekben. Tehát Haskell, mint Lisp született a tiszta matematika. De ismétlem, a szintaxis nem az, amit valószínűleg használható.

Akkor biztosan magyarázni Lisp és Haskell szintaxis matematikusok és ők kezelik, mint a „játék”. Nyelvi konstrukciók, mint a hurkok, rekurzió és feltételes bizonyítható ki a játékszabályokat, nem pedig vakon végrehajtott hasonló más nyelveken. Ez léphet be a birodalmakban combinatronics, másik ága a matematika. Valóban, combinatronics, még a szám fogalmát lehet kialakítani ki a játékszabályok, ahelyett, hogy a natív része a nyelv (google Church számok).

Tehát egy pillantást Lisp / Scheme, Erlang és Haskell, ha akarja. Erlang különösen szintaktikai közel, amit akar:

add(a,b) -> a + b

De én ajánlást írni a C-szerű pszeudokódokra. Ez a fajta a legkisebb közös nevező a programozási nyelvek. Szintaktikai, hogy viszonylag könnyű megérteni, és tiszta. És a függvény szintaxisa még származik funkciók matematika. Emlékezz f(x)?

Mint egy plusz, matematikusok használják írásban C statisztikusok használják írásban C (bár általában ők inkább R), fizikusok használnak írásban C programozó használ legalább nézi C (tudom, hogy néhány, aki még soha megérintette C).

Tulajdonképpen nem is. Említette, hogy a célközönség a statisztikusok. Írjon R

Válaszolt 28/01/2010 21:47
a forrás felhasználó

szavazat
7

Látom, ha-kifejezések matematikai jelrendszer elég gyakran. A szokásos dolog a hurok egy rekurzív sorozat , vagy azzal egyenértékű, a függvény rekurzív.

Íme a Ackermann függvény meghatározása a Wikipedia, például:

A (m, n) = n + 1, ha m = 0;  A (m-1, 1), ha m> 0, és n = 0;  és A (m-1, A (m, n-1)) ha m> 0, és n> 0.

Ez a kép szép, mert úgy érzi, a matematikai ízű, mégis tisztán írja be csaknem pontosan megegyezik az írásbeli és olyan implementáció. Ez nem mindig lehetséges elérni.

Egyéb matematikai jelöléseket, amelyek megfelelnek a hurkok közé tartozik Σ-jelölést összegzési és set-Builder jelöléssel .

Remélem, ezzel választ a kérdésére! De ha a cél az, hogy leírja, hogyan történik valami, és valaki érti, azt hiszem, ez valószínűleg tévedés azt feltételezni, hogy a matematikusok szeretné látni egyenletek. Nem hiszem, hogy ők cserélhető szerszám (annak ellenére, hogy Turing ekvivalencia). Ha az algoritmus során változékony adatstruktúrák eljárási kódex valószínűleg jobb lesz, mint egyenletek magyarázatát.

Válaszolt 29/01/2010 00:21
a forrás felhasználó

szavazat
2

Egy szimbólum általános hurkok nem létezik; általában akkor használja az összegzés üzemben . „ha” képviseli a következményei , és hogy „egy tuple egy listát”, akkor használja unió .

Azonban , általában egy kicsit beszédességgel nem feltétlenül rossz dolog - néha, különösen a komplex algoritmusokat, a legjobb, ha pontosan ki egyszerű angol, példákkal és rajzokkal. Ez kétszeresen igaz a nem-programozóknak.

Gondolj bele: ha elolvassa egy matematikai tankönyvet az euklideszi algoritmus GCD, vagy a szitán Eratosthenes, hogyan van megírva,? Általában az algoritmus maga prózában, míg az igazolást az algoritmus, ahol a matematikai szimbólumok hazudik.

Válaszolt 29/01/2010 02:00
a forrás felhasználó

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