curs1

25
Logic˘ as , i structuri discrete Funct , ii Marius Minea [email protected] http://www.cs.upt.ro/ ~ marius/curs/lsd/ 23 septembrie 2013

Upload: maximbogdanel

Post on 16-Aug-2015

218 views

Category:

Documents


3 download

DESCRIPTION

iouy

TRANSCRIPT

Logicas,istructuridiscreteFunct,[email protected]://www.cs.upt.ro/~marius/curs/lsd/23septembrie2013Cums-armaiputeanumicursul?MatematicidiscreteMatematicidiscretecuaplicat,iiBazeleinformaticiiMatematicidiscretecuprogramarefunct,ionalaDeceacestcurs?Matematicilediscretesuntbazainformaticii:mult,imi,funct,ii,relat,ii,automate,gramatici,grafurilogica: limbajul ncareformulamrigurosproblemeleCe nvat,amlaacestcurs?not,iuniledebazadins,tiint,acalculatoarelorundes,icumseaplicaele,maiales nlimbajeledeprogramarecumsaprogramammaibineFunct,iiFiinddatemult,imileAs,iB,ofunct,ief : A BeoasocierecarefacesacorespundaecaruielementdinAunsingurelementdinB.Imagine: http://en.wikipedia.org/wiki/File:Total_function.svgFunct,ii: componenteledenit,ieiDenit,iafunct,ieiaredecitreicomponente:1. domeniuldedenit,ie(A)2. domeniuldevalori(B)3. asocierea/corespondent,apropriu-zisa(legea,regula,etc.)f : Z Z,f (x) = x + 1 s,i f : R R,f (x) = x + 1suntfunct,iidistincte!Inlimbajeledeprogramare,domeniuldedenit,ies,idevaloricorespundtipurilor.Vomvedeacaputemaveafunct,iicarelucreazacumaimultetipuri(polimorsm).ExemplecareNUsuntfunct,iinuasociazaovaloareecaruielement(g. 1)asociazamaimultevaloriunuielement(g. 2)Imagine: http://en.wikipedia.org/wiki/File:Partial_function.svghttp://en.wikipedia.org/wiki/File:Multivalued_function.svgFunct,ii nlimbajeledeprogramareInlimbajeledeprogramare,funct,ia(procedura,metoda)eentitateadebazaprincaredescriemoprelucrare(uncalcul).Acestfaptecelmaievident nprogramareafunct,ionala(s,ilimbajeledeprogramarefunct,ionale):prelucraricomplexeprincompuneredefunct,iisimple(mpart,indprogramul nfunct,iicontrolamcomplexitatea)funct,iilepotmanipulatelafeldesimplucas,ialtevaloriuzuale(ntregi,reali,etc.)Programarefunct,ionala nMLDeceML?potrivitpentruailustraconcepteledematematicidiscretedezvoltat(RobinMilner,Univ. Edinburgh,anii70) mpreunacuunsistemdedemonstraredeteoreme(logicamatematica)fundamentatriguros evitaanumiteerori(ex. detip)areconceptecareauinuent,ataltelimbajeEimportantsa nvat,amconcepte,nudoarlimbaje!Alanguagethatdoesntaectthewayyouthinkaboutprogramming,isnotworthknowing.AlanPerlisCaml: undialectdeML,cuinterpretoruls,icompilatorulOCamlhttp://caml.inria.frFunct,ii nOCamlfun x -> x + 1 oexpresiereprezentandofunct,ie(faranume)let f = fun x -> x + 1letleagaidenticatorul(numele)fdeexpresiadatasescriemaiscurt:let f x = x + 1InterpretorulOCamlraspunde: val f : int -> int = matematic: f eofunct,iedela ntregila ntreginprogram: feofunct,iecuargumentdetip ntreg(int)s,irezultatdetip ntreg(domeniuls,icodomeniuldevintipuri)Inprogramare,untipdedateeomult,imedevalori,mpreunacunis,teoperat,iidenitepeastfeldevalori.InML,tipurilepotdeduseautomat(inferent,adetip):pentrucalaxseaplica+,compilatoruldeducecaxe ntregDeundevinlimbajelefunct,ionale?lambda-calcul: celmaisimplulimbajdeprogramare(Church1932)Universal: poateexprimaoricefunct,iecalculabilaOexpresie nlambda-calculee:ovariabila xofunct,ie x . e (funct,iedevariabilax)nML: fun x -> eoevaluaredefunctie e1e2(funct,iae1aplicataargumentuluie2)lafel nML: f 3 faraparantezeasociativalastanga: f x y=(f x) yTeorialuiefundamentala nstudiullimbajelordeprogramareFunct,ia nmatematicas,iprogramareImplicit,daresent,ial:Ofunct,iematematica,apelatarepetat(cuacelas,iargument),daacelas,irezultat.Eadevarats,i nprogramareafunct,ionalapura.vomprogramacatmaimult nacestfelemaius,orderat,ionatdespreprogramelescriseInprogramareaimperativanue ntotdeaunaas,a(atribuirilavariabile)Cumputemdeniofunct,ie?printr-osinguraformula(expresie/regula)pecazuri(maimultevariante/expresii,depinzanddeocondit,ie)individual(explicit)pentruecarevaloareFunct,iidenitepecazuriFie abs: Z Z abs(x) =

x x 0x x< 0Valoareafunct,ieinuedatadeosinguraexpresie,cideunadindouaexpresiidiferite(xsau-x),depinzanddeocondit,ie(x 0).let abs x = if x >= 0 then x else - xConstruct,ia ifexpr1thenexpr2elseexpr3eoexpresiecondit,ionalaDacaevaluareaexpr1daovaloareadevarata,valoarea ntregiiexpresiievaloarealuiexpr2,altfelevaloarealuiexpr3.Obs.:Inaltelimbaje(C,Java,etc.) iflucreazacuinstruct,iuni.InML,iflucreazacuexpresii.Maimult,expr2s,iexpr3trebuiesaaibeacelas,itip(ambelesaentregi,ambelereale,etc.).Funct,iideniteprintipareExemplu: conversienoteamericanelet us_to_GPA = function| A -> 4| B -> 3| C -> 2| D -> 1| _ -> 0Cuvantulcheiefunctionintroduceofunct,iedenitafolosindpotriviridetipare(engl. patternmatching).Fiecarevariantaareformatipar ->rezultat.Incazulsimpludemaisus,ecaretipareovaloareindividuala.Tiparul acoperaoricevaloare(carenuafostdejaacoperita)Limbajulneobligasaacoperimtoatevariantele(funct,iatrebuiesaedenitacomplet) reducenumaruldeerori.Funct,iiinjectiveDef.: Ofunct,ief : A Beinjectivadacaasociazavaloridiferitelaargumente(valori)diferite.Riguros: pentruoricex1, x2 A,x1 = x2 f (x1) = f (x2)Echivalent: f (x1) = f (x2) x1= x2dacavalorilesuntegale,atunciargumentelesuntegale(contrapozitivaarmat,ieidemaisus)Inlogica,faptulcaoarmat,ieeechivalentacucontrapozitivaeinepermitedemonstrat,ieprinreducerelaabsurd.Daca mult,imile A s,i Bsunt nite, s,i f e injectiva, atunci |A| |B| .Exemple: funct,ieinjectivas,ineinjectivaImagine: http://en.wikipedia.org/wiki/File:Injection.svghttp://en.wikipedia.org/wiki/File:Surjection.svgFunct,iiinjective: aplicat,iiSapresupunemcavremsaasociemecaruistudentoinformat,ie(ex. numardetelefon).Osolut,iearsapunemstudent,ii ntr-untabel.Dacaputemconstruiofunct,iecaredinecarenumesacalculezenumarulintrariidetabel(ex. AdrianIonache->15),gasimus,orinformat,iaasociata.Funct,iacaredaindiceledintabeltrebuiesaeinjectivaaltfelsesuprapunintrarilepentrudoistudent,i.Inprograme,sefolosesctabelededispersie(engl. hashtables).Funct,iile(hashfunctions)carecalculeazaindicelenupotntotdeaunainjective(dece?)(numarulposibildes,iruriemaimaredecattabelul).Dardorimoprobabilitatecatmaimicadecoliziuni(argumentediferitecuvaloriegale),s,itrebuietratatcazulcoliziunilor.Funct,iisurjectiveOfunct,ief : A Besurjectivadacapentruecarey Bexistaunx Acuf (x) = y.Exemple: funct,iesurjectivas,inesurjectivaImagine: http://en.wikipedia.org/wiki/File:Surjection.svgImagine: http://en.wikipedia.org/wiki/File:Injection.svgFunct,iisurjective: discut,ieDacaAs,iBsuntmult,imienite,s,if : A Besurjectiva,atunci|A| |B|.Putemtransformaofunct,iene-surjectiva ntr-unasurjectivaprinrestrangereadomeniuluidevalori:f1: R R,f1(x) = x2nuesurjectiva,darf2: R [0, )(restransalavalorinenegative)este.Inprogramare,eutilsadenimfunct,iacutipulrezultatuluicatmaiprecis(dacaeposibil,surjectiva).Astfel,candrat,ionamdespreprogram,s,timdejadintipulfunct,ieicevaloripoatereturna,faraatrebuisa-ianalizamcodul.Exercit,iu: cumputemdenifunct,iasemn?Catefunct,iiexistadelaAlaB?DacaAs,iBsuntmult,iminiteexista |B||A|funct,iidelaAlaB.Notat,ie: |A|=cardinalulluiA(numaruldeelemente)Demonstrat,ie: prininduct,iematematicaPrincipiulinduct,ieimatematiceDacaopropozit,ieP(n)depindedeunnumarnaturaln,s,i1)(cazuldebaza)P(0)eadevarata2)(pasulinductiv)pentruoricen 0,P(n) P(n + 1)atunciP(n)eadevaratapentruoricen.Funct,iibijectiveOfunct,iecareeinjectivas,isurjectivasenumes,tebijectiva.Daca mult,imile A s,i Bsunt nite, s,i f e bijectiva, atunci |A| = |B| .Imagine: http://en.wikipedia.org/wiki/File:Bijection.svgImagines,ipreimagineFief : A B.DacaS A,mult,imeaelementelorf (x)cux Ssenumes,teimaginealuiSprinf ,notataf (S).DacaT B,mult,imeaelementelorxcuf (x) Tsenumes,tepreimaginealuiTprinf ,notataf 1(T).Ingeneral,f 1(f (S)) S(aplicand ntaifunct,ia,s,iapoirevenindlapreimagine,sepierdeprecizie).Funct,iiinversabileOfunct,ief : A Beinversabiladacapentruoricey Bexistaounicavaloarex Acuf (x) = y.Ofunct,ieeinversabiladacas,inumaidacaebijectiva:pentruoricey Bexistax Acuf (x) = y: fesurjectivaxcuf (x) = yeunic: feinjectiva.Inversaluif : A Bsenoteazaf 1: B A.Catdeus,orsepoatecalculainversa?Faptulcaofunct,ieeinversabilanu nseamnaneaparatcainversaeus,orcalculabila.Considerammult,imea Zparesturilornenulemodulop,cupprim.Eaformeazaungrupmultiplicativcuoperat,iade nmult,ire modp.TeoremaluiFermat: ap1= 1 modppentruoricea Zp.Semais,tiecadacapeprim,grupul Zparecelput,inungenerator,adicaunelementgastfel ncats,irulg, g2, g3, ..., gp1parcurgetoatamult,imea Zp.Inseamnacafunct,iaf : Zp Zp,f (x) = gxmodpeobiject,ie(s,iinversabila).Nusecunoas,te nsaunmodecientdeaoinversa(problemalogaritmuluidiscret) efolosita ncriptograe.Compunereafunct,iilorFiefunctiilef : A Bs,ig: B C. Compunerealorestefunct,iag f : A C,(g f )(x) = g(f (x)).Compunereanepermitesaconstruimfunct,iimaicomplicatedinfunct,iimaisimple.Imagine: http://en.wikipedia.org/wiki/File:Compufun.svgProprietat,iarecompuneriifunct,iilorCompunereaadouafunct,iieasociativa:(f g) h = f (g h)Compunereaadouafunct,iinueneaparatcomutativaf g = g f (ngeneral)Compunereas,iinversaPentruoricefunct,ieinversabilaf : A Bavemf f 1= idBs,i f 1 f = idAundeidA: A A,idA(x) = xefunct,iaidentitate