ComputersSoftware

RPN: algorithm, txoj kev thiab piv txwv

RPN ib zaug tsim lub hauv paus ntawm ib tug computer programmer nyob rau hauv lub ntiaj teb no. Niaj hnub no nws tsis yog zoo li ntawd lub npe hu. Yog li ntawd, phau ntawv dab neeg ua piv txwv, depicting ib tug "rov qab" Polish hnyuv ntxwm yob nraum zoov, tseem yuav tsis to taub los ntawm ib co cob programmers. Tsis zoo heev piav qhov cuav xwm, tab sis nyob rau hauv cov ntaub ntawv no nws yuav tsum siab justified.

infix

Tag nrho cov programmers, thiab feem ntau cov menyuam kawm ntawv paub txog cov kev siv cov tswv. Piv txwv li, cov kev qhia x + summation qhov tseem ceeb rau lub zog x thiab y siv ntxiv kos npe rau. Tsawg zoo dua lub npe hu yog qhov tseeb hais tias qhov no yog borrowed los ntawm kev kawm txog zauv cim, hu ua infix cim, nyob rau hauv qhov tseeb, yog ib tug loj teeb meem rau lub tshuab. Qhov no neeg teb xov tooj tau txais raws li cov tswv yim ob qhov tseem ceeb yog kaw nyob rau sab laug thiab txoj cai. Nyob rau hauv lub cajmeem cim siv optionally nrog tej yam tshwm sim ua hauj lwm. Piv txwv li, x + y yuav sau raws li ib tug muaj nuj nqi ntawm quav (x, y), nyob rau hauv uas lub compiler thiab nws thiaj li converts infix cim. Txawm li cas los, txhua leej txhua tus paub lej yog ib yam nkaus thiab zoo tsis tau siv kev laij zauv kab zauv, uas tsim ib tug zoo ntawm Internal mini-lus nyob rau hauv yuav luag txhua txhua hom lus programming.

mis tshuab txhais lus

Tus thawj zoo tiag tiag Fortran programming lus tau ua thiaj li lom zem ntau vim hais tias cov kev laij zauv qhia (ie mis ..) Nws hloov dua siab tshiab (tshaj tawm hauv xov) nyob rau hauv lub code, li no lub npe ntawm nws - mis txhais lus. Ua ntej ntawd, lawv yuav tsum tau sau ntawv, piv txwv li, daim ntau quav tso nyob rau hauv daim ntawv ntawm cov kev khiav dej num (thiab multiply (b, c)). Nyob rau hauv COBOL teeb meem ntawm kev siv tsis siv neeg hloov dua siab tshiab mis mas suav hais tias nyuaj heev vim hais tias cov programmers yuav tsum tau sau tej yam uas zoo li Ntxiv A kom B Mutliply By C.

Yuav ua li cas yog tsis ncaj ncees lawm nrog infix?

Cov teeb meem no, tau hais tias tus tswv muaj xws li cov khoom raws li nqis thiab associativity. Vim li no, lub ntsiab txhais ntawm infix muaj nuj nqi yuav tsis-tsis tseem ceeb ua hauj lwm. Piv txwv li, kev ua lej khu muaj ntau dua nqis tshaj tas li ntawd los yog kev rho tawm, uas txhais tau tias cov kev qhia 2 + 3 * 4 yog tsis sib npaug zos rau cov sum ntawm 2 thiab 3, multiplied by 4, raws li nws yuav nyob rau hauv kev kawm ntawm lub tswv ntawm sab laug mus rau sab xis. Nyob rau hauv qhov tseeb, muab 3 los ntawm 4 thiab ntxiv 2. Qhov kev piv txwv qhia txog hais tias lub xam ntawm lub infix qhia feem ntau yuav tsum tau ib tug hloov nyob rau hauv qhov kev txiav txim ntawm cov tswv thiab operands. Nyob rau hauv tas li ntawd, nws yog tsim nyog los siv rau kev zawm hniav mus nrhiav ntau ntshiab cim. Piv txwv li, (2 + 3) * (4 + 5) yuav sau tsis tau rau tsis muaj tus koov, vim hais tias 2 + 3 * 4 + 5 txhais tau tias koj yuav tsum muab 3 los ntawm 4 thiab ntxiv 2 thiab 5.

Qhov kev txiav txim nyob rau hauv uas koj xav kom xam lub tswv yuav tsum tau ib tug ntev nco ntsoov. Vim li no, cov tub ntxhais kawm uas pib kawm zauv, feem ntau tau txais cov tsis ncaj ncees lawm tau, txawm yog hais tias tus tiag tiag ua hauj lwm yog ua kom raug. Nws yog tsim nyog los qhia qhov kev txiav txim ntawm kev txiav txim nqe lus los ntawm lub plawv. Ua ntej, qhov kev txiav txim yuav tsum tau nqa tawm nyob rau hauv koov, ces npaug thiab sib faib, thiab thaum kawg ntxiv thiab sib rho. Tab sis muaj yog ib txoj kev sau ntawv zauv kab zauv raws li infix cim no tsuas yog ib cov tau "me me lus" uas yuav muab ntxiv rau ntau.

Prefix thiab postfix cim

Ob tug ntawm cov feem ntau zoo-paub cawm yog sau cov neeg teb xov tooj ua ntej los yog tom qab nws operands. Lawv lub npe hu ua lub prefix thiab postfix cim. Logician Yan Lukasevich invented ib tug thawj nyob rau hauv 1920. Nws nyob hauv teb chaws Poland, yog li cov ntaub ntawv yog hu ua Polish. Postfix version, ntsig txog, hu ua rov qab Polish cim (ARF). Qhov txawv tsuas nruab nrab ntawm cov hau kev ob yog cov kev taw qhia nyob rau hauv uas mus nyeem cov ntaub ntawv (sab laug mus rau sab xis los yog txoj kev sab laug), li ntawd, nws suffices xav txog nyob rau hauv kom meej tsuas yog ib qho ntawm lawv. Lub OPN neeg teb xov tooj yog sau tom qab nws operands. Yog li, cov kev qhia AB + nruab nrab yog ib qho piv txwv RPN rau A + B.

Unlimited tooj ntawm operands

Qhov tam sim ntawd kom zoo dua ntawm cim yog hais tias nws no tshab xyuas lub n-adic neeg teb xov tooj thiab infix cim yog tiag tiag xwb ua hauj lwm nrog ob tug operands, t. E. Yog inherently haum tsuas yog rau cov binary hauj lwm. Piv txwv li, ABC @ yog qhov rov qab Polish qhia siv triadic cim uas yog cov nqi siab tshaj plaws ntawm A, B thiab C. Nyob rau hauv rooj plaub no tus neeg teb xov tooj ua nyob rau sab laug ntawm lub peb operand nws tus kheej thiab raws li ib tug muaj nuj nqi hu @ (A, B, C). Yog hais tias koj sim mus sau cov @ cim raws li infix, xws li A @ BC los yog ib yam dab tsi zoo li hais tias, nws yuav paub tseeb hais tias nws tsuas tsis ua hauj lwm.

Qhov muaj feem thib muab los ntawm qhov kev txiav txim

RPN muaj lwm kom zoo dua nyob rau hauv hais tias lub tseem ceeb tshaj ntawm lub tswv yuav sawv cev los ntawm qhov kev txiav txim ntawm lawv cov tsos. Nyob rau tib lub sij hawm yeej tsis xav kev zawm hniav, txawm tias lawv yuav tsum muaj raws li cov cim ua hauj lwm kom pab txhawb lub hloov dua siab tshiab los ntawm infix cim. Piv txwv li, AB + C * - unambiguous sib npaug (A + B) * C, ces tus npaug tsis tau xam kom txog thaum lub tas li ntawd ua, uas muab ib tug thib ob operand rau npaug. Uas yog, yog hais tias tus laij AB + C * los ntawm ib tug neeg teb xov tooj ntawm ib lub sij hawm, peb tau txais AB + C * -> (AB +) * C -> (A + B) * C.

muab xam algorithm

Lub OPN neeg teb xov tooj zoo tib yam li ib tug muaj nuj nqi uas yuav siv sij hawm raws li cov lus ob qhov tseem ceeb sau rau ntawm nws sab laug. Nyob rau hauv tas li ntawd, nws yog ib tug natural cim rau kev siv nyob rau hauv programming lus, raws li lub sijhawm ntawm nws muab xam raws nkaus Ii mus rau lub teeb ua hauj lwm thiab qhov yuav tsum tau rau parsing yog tshem tawm. Piv txwv li, lub arrester nyob rau hauv lub qhia 5 + 6 * 7 yuav tshwm sim raws li ib tug 5, 6, 7 *, +, thiab nws yuav xam tsuas yog PP ntawm sab laug mus rau sab xis thiab sau rau qhov tseem ceeb nyob rau hauv ib pawg. Thaum twg ib qho kos npe rau ntawm lub lag luam, xaiv los ntawm cov sab sauv caij 2 ntawm lub computer nco, tus neeg tsav tsheb yog siv thiab cov kev tshwm sim rov qab mus rau lub cim xeeb. Thaum lub kawg ntawm lub xam qhia yuav tsum nyob rau hauv lub saum toj ntawm cov pawg.

Piv txwv li:

  • S = () 5, 6, 7, *, + 5 muab tso rau hauv pawg.
  • S = (5) 6, 7, *, + 6 muab tso rau hauv pawg.
  • S = (5, 6), 7 *, 7 + muab cov pawg.
  • S = (5, 6, 7), * 2 + xaiv qhov tseem ceeb ntawm cov pawg, siv * thiab muab lub txiaj ntsim nyob rau hauv lub teeb.
  • S = (5, 6 * 7) = (5, 42) + 2 qhov tseem ceeb xaiv los ntawm pawg, mus thov lub + thiab muab tso rau cov nyob rau hauv lub teeb.
  • S = (5 + 42) = (47) muab xam ua tiav, qhov tshwm sim yog muab nyob rau hauv lub saum toj ntawm cov pawg.

Qhov no algorithm yuav tau xyuas RPN pheej hais dua, tab sis txhua lub sij hawm nws yuav ua hauj lwm, tsis muaj teeb meem yuav ua li cas txoj cov zauv qhia.

OPN thiab sib tsub sib nias yog zoo txuas. Qhov kev piv txwv qha tau li cas siv lub cim xeeb los xam tus nqi ntawm qhov rov qab Polish cim. Tsawg cuab yog hais tias koj muaj peev xwm siv lub teeb, hloov txheem infix qhia nyob rau hauv mob raum tsis ua hauj lwm.

Piv txwv ntawm programming lus

Pascal RPN pom tau hais zoo li no (qhia tau hais tias ib feem ntawm cov qhov kev pab cuam).

Yuav kom nyeem tau cov zauv thiab tswv nyob rau hauv lub voj voog hu ua txoj kev, uas txiav txim seb lub token tooj los yog kos npe rau lub lag luam. Nyob rau hauv thawj cov ntaub ntawv, tus nqi nyob rau hauv lub teeb, thiab lub thib ob ntawm lub ob sab sauv pawg tooj coj txiav txim yog tau ua thiab tshwm sim yog khaws cia.

toktype: = num;

nyeem (s);

yog tias c nyob rau hauv [ '+', '-', '*', '/'] ces pib

yog eoln ces cn: = '' lwm nyeem (cn);

yog cn = '' ces

cov ntaub ntawv ntawm ib tug

'+': Toktype: = ntxiv; '-': toktype: = sub;

'*': Toktype: = mul; '/': Toktype: = div

kawg

lwm tus pib

Yog hais tias ib tug = '-' ces sgn: = -1 lwm yuam kev: = c <> '+';

nrog: = cn

kawg

xaus;

yog hais tias (tsis yuam kev) thiab (toktype = num) ces getnumber;

yog toktype <> num ces pib

y = pop; x: = pop;

yog hais tias tsis yuam kev ces

cov ntaub ntawv toktype ntawm

ntxiv: z: = x + y; sub: z: = x-y; mul: z: = x * y; div: z: = x / y

kawg

laub (z);

C-siv RPN (qhia yog ib feem ntawm qhov kev pab cuam):

rau (s = strtok (s, w); s; s = strtok (0, w)) {

ib = strtod (s, & e);

yog hais tias (e> s) laub (a);

#define rpnop (x) printf ( "% c:", * s), b = pop (), ib tug = pop (), laub (x)

lwm tus yog hais tias (* s == '+') rpnop (a + b);

lwm tus yog hais tias (* s == '-') rpnop (a - b);

lwm tus yog hais tias (* s == '*') rpnop (a * b);

lwm tus yog hais tias (* s == '/') rpnop (ib tug / b);

#undef rpnop

}

hardware implementations

Nyob rau hauv cov hnub, thaum computer technology yog heev kim, nws twb xav tias ib tug zoo lub tswv yim mus yuam cov neeg siv surge arresters. Nyob rau hauv 1960-ies., Raws li tam sim no, nws twb tau mus yuav cov cav laij, uas ua hauj lwm nyob rau hauv rov qab Polish cim. Yuav kom ntxiv 2 thiab 3 ntawm lawv yuav tsum nkag mus rau 2, ces 3, thiab nias lub "ntxiv" khawm. Thaum xub thawj siab ib muag, lub tswv yim operands mus rau lub teb xov tooj seemed nyuab thiab tsis yooj yim yuav tsum nco ntsoov, tab sis tom qab ib tug thaum ib txhia yog quav rau qhov no txoj kev xav thiab yuav tsis to taub yog vim li cas rau lwm tus neeg hais rau ruam infix, uas yog ib qhov nyuab thiab thiaj li yog xwb.

Burroughs lub tuam txhab txawm ua tau ib lub mainframe, uas muaj tsis muaj lwm yam kev nco, tsuas yog pawg. Qhov tshaj plaws xwb uas yuav ua rau lub tshuab - thov lub algorithms thiab cov hau kev RPN rau lub hauv paus teeb. Tag nrho nws cov hauj lwm tau raws li arresters tswv, uas siv rau cov sab sauv n qhov tseem ceeb. Piv txwv li, cov pab neeg coj lub Rov qab Chaw nyob ntawm lub sab saum toj ntawm lub teeb, thiab li ntawm. D. Cov architecture ntawm xws li ib tug tshuab yog yooj yim, tab sis tsis ceev ceev txaus lwv nrog lub ntau architectures. Muaj ntau, txawm li cas los, tseem khuv xim qhov tseeb hais tias xws li ib tug yooj yooj yim thiab elegant mus kom ze rau xam qhov twg txhua txhua qhov kev pab cuam yog ib qho kev qhia ntawm OPN, pom nws txuas ntxiv.

Ib lub sij hawm cov cav laij leb nrog RPN twb nrov, thiab ib co neeg tseem muab lawv nyiam. Nyob rau hauv tas li ntawd, lawv tsim ib pawg-taw qhia kom paub hom lus, xws li Forth. Niaj hnub no nws yog me ntsis siv, tab sis tseem nostalgic los ntawm nws tus qub neeg siv.

Yog li ntawd yog dab tsi lub ntsiab lus tso dag txog rov qab Polish hnyuv ntxwm?

Yog hais tias peb xav hais tias cov neeg teb xov tooj ntawm cov hnyuv ntxwm, cov infix cim, nws yuav tsum tau nyob rau hauv lub yob li nyob rau hauv cov pa kub aub. Lub RPN yog nyob txoj cai nyob rau hauv ob halves tau npaj therebetween tom qab muab xam. Tam sim no los nyuaj ib feem - mustard. Nws yog twb nyob rau cov hnyuv ntxwm, t. E. Twb xam raws li ib tug unary neeg teb xov tooj. Nws yog ntseeg hais tias mustard yuav tsum tau qhia raws li uncalculated thiab yog li ntawd yuav tsum tau tsiv mus rau sab xis ntawm lub hnyuv ntxwm ... Tab sis nws yog ua tau, qhov no yuav yuav tsum tau ib yam nkaus thiab loj pawg ntawm cov ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 hmn.atomiyme.com. Theme powered by WordPress.