Reprezentujący kod algebraicznie

głosy
5

Mam kilka małych algorytmów, które chciałbym napisać w papierze. Są one stosunkowo krótkie i zwięzłe. Jednak zamiast pisać je w pseudo-kodzie (à la Cormen lub nawet Knuth), chciałbym napisać algebraiczną reprezentację nich (więcej liniowy i lepsze oddawanie lateks). Jednak nie mogę znaleźć środki w celu najlepszego notacji do tego, czy jest coś: np jak mogę reprezentować pętlę? Gdyby? Dodanie krotki do listy?

Czy ktoś z was spotkał ten problem i jakoś go rozwiązał?

Dzięki.

EDIT : Dzięki, ludzie. Chyba tak słabą pracę w frazowania pytanie. Tu idzie znowu, mając nadzieję, że stało się ono: co jest wspólne dla notacji mówimy o pętli i if-then klauzul w notacji matematycznej? Na przykład, można użyć $acc \leftarrow acc \cup \langle i,i+1 \rangle$do reprezentowania „Dodaj” metodę listy.

Utwórz 28/01/2010 o 20:50
źródło użytkownik
W innych językach...                            


8 odpowiedzi

głosy
0

Coś takiego stronie opisuje?

Odpowiedział 28/01/2010 o 20:57
źródło użytkownik

głosy
1

Można spojrzeć na Haskell. Haskell formatuje dobrze w lateksie, ma ładny składnię algebraicznych, a można nawet skompilować plik lateksowej Haskell w nim, pod warunkiem, że kod jest owinięty w \begin{code}i \end{code}. Zobacz tutaj: http://www.haskell.org/haskellwiki/Literate_programming . Prawdopodobnie istnieje wykształconych narzędzia programistyczne dla innych języków.

Odpowiedział 28/01/2010 o 20:59
źródło użytkownik

głosy
2

Chciałbym skopiować Knuth. Niewielu wie, jak komunikować się lepszy od niego w otoczeniu informatyki.

Odpowiedział 28/01/2010 o 21:00
źródło użytkownik

głosy
-1

APL ? Jedynym problemem jest to, że niewiele osób może ją przeczytać.

Odpowiedział 28/01/2010 o 21:00
źródło użytkownik

głosy
8

Nie rób tego. Jesteś odbiegające od tego, co ludzie oczekują, aby zobaczyć, kiedy odczytać referat na temat algorytmów. należy postępować oczekiwanych praktyk; Twoje pomysły są bardziej prawdopodobne, aby zwrócić uwagę, że na to zasługują. Jeśli wejdziesz między wrony, musisz krakać jak i one.

Formatowanie kodu (lub Pseudokod, ponieważ może to być) w LaTeXed papieru jest bardzo proste. Patrz, na przykład formatowanie kodu w LaTeX .

Odpowiedział 28/01/2010 o 21:03
źródło użytkownik

głosy
1

Lisp zaczynał jako matematycznej notacji modelu obliczeniowego tak, że wykładowca będzie mieć lepsze narzędzia niż maszyny Turinga. Przez przypadek, okazuje się, że to może być realizowane w zespole - w ten sposób LISP, język programowania urodził.

Ale nie sądzę, że to jest naprawdę to, czego szukasz ponieważ model obliczeniowy lisp opisuje nie posiada pętle: rekurencja jest używany. Składnia wywodzi Algebra gdzie aparaty oznaczać ocenić-to-a-zamiennika z rezultatu. Rzeczywiście, model LISP za informatyki jest w zasadzie substytucji - co zasadniczo jest algebra.

Rzeczywiście, języki najbardziej funkcjonalne jak Lisp, Haskell i Erlang pochodzą z matematyki. Haskell jest rzeczywiście wynikiem udowodnienia, że ​​rachunek lambda może być używany do wdrażania systemów typu. Tak Haskell, podobnie jak Lisp zostało zrodzone z czystej matematyki. Ale znowu, składnia nie jest to, co będzie zapewne przyzwyczaić.

Można oczywiście tłumaczyć składni Lisp i Haskell do matematyków i oni traktują go jako „gry”. konstrukcje językowe, takie jak pętle, rekursji i warunkowych można udowodnić z regułami gry, zamiast ślepo realizowany podobnie jak w innych językach. To doprowadzi cię do sfery combinatronics, innej gałęzi matematyki. Rzeczywiście, w combinatronics, nawet pojęcie liczb może być zbudowana z regułami gry, a nie będąc rodowitym częścią języka (google Kościół cyframi).

Więc rzucić okiem na Lisp / Scheme, Erlang i Haskell, jeśli chcesz. Erlang szczególnie ma składni blisko tego, co chcesz:

add(a,b) -> a + b

Ale moja rada jest taka, aby pisać w C-jak Pseudokod. To coś w rodzaju najmniejszego wspólnego mianownika w językach programowania. Ma składnię, który jest dość łatwy do zrozumienia i czyste. I składnia funkcji nawet wywodzi się z funkcji w matematyce. Pamiętaj f(x)?

Jako plus, matematycy są wykorzystywane do pisania C, statystyków są wykorzystywane do pisania C (choć na ogół wolą R), fizycy są wykorzystywane do pisania C, programiści są wykorzystywane do przynajmniej patrząc na C (znam kilku, którzy nigdy wcześniej nie dotknięciu C).

Faktycznie, porysować, że. Wspomnieć, że grupa docelowa jest statystyków. Wpisz w R

Odpowiedział 28/01/2010 o 21:47
źródło użytkownik

głosy
7

Widzę IF-wyrażenia w notacji matematycznej dość często. Zazwyczaj, co dla pętli jest związek nawrotu lub równoważnie, funkcja zdefiniowane rekurencyjnie.

Oto jak Funkcja Ackermanna definiuje Wikipedia, na przykład:

A (m, n) = n + 1 gdy m = 0;  A (m-1, 1), jeśli m> 0, a n = 0;  i A (m-1, a (m, n-1)), jeśli m> 0 N> 0.

Ten obraz jest ładny, ponieważ czuje matematyczny w smaku, a jednocześnie można wyraźnie wpisz go w niemal dokładnie tak, jak napisane i mają realizację. Nie zawsze jest to możliwe, aby to osiągnąć.

Inne notacja matematyczna, które odpowiadają pętli obejmują Ď-notację sumowania i notacji set-budowniczy .

Mam nadzieję, że odpowiedzi na swoje pytanie! Ale jeśli celem jest opisanie, jak coś jest zrobione i ktoś zrozumieć, myślę, że jest to prawdopodobnie błędem zakładać, że matematycy woleliby zobaczyć równań. Nie sądzę, że są narzędzia wymienne (mimo Turinga równoważności). Jeśli algorytm polega zmienny struktur danych, kod proceduralny jest prawdopodobnie będzie lepszy niż równań dla tłumacząc go.

Odpowiedział 29/01/2010 o 00:21
źródło użytkownik

głosy
2

Symbol dla ogólnych pętli nie istnieje; Zwykle będziesz korzystać z operatorem sumowania . „if” jest reprezentowana za pomocą implikacji i „dodać krotka do listy” należałoby użyć unii .

Jednak , ogólnie rzecz biorąc, trochę szczegółowość niekoniecznie jest złą rzeczą - czasem, zwłaszcza w przypadku skomplikowanych algorytmów, to najlepiej przeliterować w prostym języku angielskim, na podstawie przykładów i schematów. Jest to podwójnie prawdziwe tylko dla programistów.

Pomyśl o tym: kiedy czytasz matematyki text-książkę o algorytm Euklidesa dla GCD, albo Sito Eratostenesa, jak to jest napisane? Zwykle sam algorytm jest proza, a dowodem jest algorytmem, w którym symbole matematyczne leżą.

Odpowiedział 29/01/2010 o 02:00
źródło użytkownik

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