diff options
| author | mo khan <mo@mokhan.ca> | 2021-11-06 17:23:25 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2021-11-06 17:23:25 -0600 |
| commit | 9fb1a62139a7f32c3377a4701fb0b256df6a9d9e (patch) | |
| tree | 16b4925bad58b5b749402a431b74848da9531298 /notes.md | |
| parent | ce8a91167617917e99d9b370aac37bb24339093e (diff) | |
plot each class of functions
Diffstat (limited to 'notes.md')
| -rw-r--r-- | notes.md | 376 |
1 files changed, 376 insertions, 0 deletions
@@ -968,3 +968,379 @@ omega <= theta <= big-oh | ----- | ----- | ------ | | omega(1) | | O(n^n) | | omega(1) | theta(log n!) | O(nlog n) | + + + + + + +1 < logn < sqrt(n) < n < nlogn < n^2 < n^3 ... < 2^n < 3^n ... < n^n + + +constant (1) +======== + +```bash +モ ruby -e '1.upto(100) { |n| puts 10 }' | asciigraph -h 32 -w 72 + 10.00 ┼─────────────────────────────────────────────────────────────────────── +``` + +logarithmic (logn) +=========== + +```bash +モ ruby -e '1.upto(100) { |n| puts Math.log2(n) }' | asciigraph -h 32 -w 72 + 6.64 ┼ ╭──── + 6.44 ┤ ╭────────╯ + 6.23 ┤ ╭───────╯ + 6.02 ┤ ╭──────╯ + 5.81 ┤ ╭─────╯ + 5.61 ┤ ╭────╯ + 5.40 ┤ ╭───╯ + 5.19 ┤ ╭───╯ + 4.98 ┤ ╭──╯ + 4.78 ┤ ╭──╯ + 4.57 ┤ ╭─╯ + 4.36 ┤ ╭──╯ + 4.15 ┤ ╭╯ + 3.94 ┤ ╭─╯ + 3.74 ┤ ╭╯ + 3.53 ┤ ╭─╯ + 3.32 ┤ ╭╯ + 3.11 ┤ │ + 2.91 ┤ ╭╯ + 2.70 ┤ ╭╯ + 2.49 ┤ │ + 2.28 ┤ ╭╯ + 2.08 ┤ │ + 1.87 ┤ ╭╯ + 1.66 ┤ │ + 1.45 ┤ │ + 1.25 ┤╭╯ + 1.04 ┤│ + 0.83 ┤│ + 0.62 ┤│ + 0.42 ┤│ + 0.21 ┤│ + 0.00 ┼╯ +``` + +square root (n) +=============== + +```bash +モ ruby -e '1.upto(100) { |n| puts Math.sqrt(n) }' | asciigraph -h 32 -w 72 + 10.00 ┤ ╭ + 9.72 ┤ ╭───╯ + 9.44 ┤ ╭───╯ + 9.16 ┤ ╭──╯ + 8.88 ┤ ╭───╯ + 8.59 ┤ ╭──╯ + 8.31 ┤ ╭───╯ + 8.03 ┤ ╭──╯ + 7.75 ┤ ╭──╯ + 7.47 ┤ ╭──╯ + 7.19 ┤ ╭──╯ + 6.91 ┤ ╭──╯ + 6.62 ┤ ╭──╯ + 6.34 ┤ ╭─╯ + 6.06 ┤ ╭──╯ + 5.78 ┤ ╭─╯ + 5.50 ┤ ╭──╯ + 5.22 ┤ ╭─╯ + 4.94 ┤ ╭─╯ + 4.66 ┤ ╭─╯ + 4.38 ┤ ╭─╯ + 4.09 ┤ ╭╯ + 3.81 ┤ ╭─╯ + 3.53 ┤ ╭╯ + 3.25 ┤ ╭─╯ + 2.97 ┤ ╭╯ + 2.69 ┤ ╭╯ + 2.41 ┤ ╭╯ + 2.12 ┤ ╭╯ + 1.84 ┤ ╭╯ + 1.56 ┤ │ + 1.28 ┤╭╯ + 1.00 ┼╯ +``` + +Linear (n) +========= + +```bash + 100.00 ┼ ╭─ + 96.91 ┤ ╭──╯ + 93.81 ┤ ╭─╯ + 90.72 ┤ ╭─╯ + 87.62 ┤ ╭─╯ + 84.53 ┤ ╭─╯ + 81.44 ┤ ╭──╯ + 78.34 ┤ ╭─╯ + 75.25 ┤ ╭─╯ + 72.16 ┤ ╭─╯ + 69.06 ┤ ╭──╯ + 65.97 ┤ ╭─╯ + 62.88 ┤ ╭─╯ + 59.78 ┤ ╭─╯ + 56.69 ┤ ╭─╯ + 53.59 ┤ ╭──╯ + 50.50 ┤ ╭─╯ + 47.41 ┤ ╭─╯ + 44.31 ┤ ╭─╯ + 41.22 ┤ ╭─╯ + 38.12 ┤ ╭──╯ + 35.03 ┤ ╭─╯ + 31.94 ┤ ╭─╯ + 28.84 ┤ ╭─╯ + 25.75 ┤ ╭──╯ + 22.66 ┤ ╭─╯ + 19.56 ┤ ╭─╯ + 16.47 ┤ ╭─╯ + 13.38 ┤ ╭─╯ + 10.28 ┤ ╭──╯ + 7.19 ┤ ╭─╯ + 4.09 ┤╭─╯ + 1.00 ┼╯ +``` + + + +n log(n) +======== + +```bash +モ ruby -e '1.upto(100) { |n| puts n * Math.log2(n) }' | asciigraph -h 32 -w 72 + 664 ┼ ╭ + 644 ┤ ╭─╯ + 623 ┤ ╭─╯ + 602 ┤ ╭─╯ + 581 ┤ ╭─╯ + 561 ┤ ╭─╯ + 540 ┤ ╭─╯ + 519 ┤ ╭─╯ + 498 ┤ ╭╯ + 478 ┤ ╭─╯ + 457 ┤ ╭─╯ + 436 ┤ ╭─╯ + 415 ┤ ╭─╯ + 394 ┤ ╭─╯ + 374 ┤ ╭─╯ + 353 ┤ ╭─╯ + 332 ┤ ╭─╯ + 311 ┤ ╭─╯ + 291 ┤ ╭──╯ + 270 ┤ ╭─╯ + 249 ┤ ╭─╯ + 228 ┤ ╭─╯ + 208 ┤ ╭─╯ + 187 ┤ ╭─╯ + 166 ┤ ╭──╯ + 145 ┤ ╭─╯ + 125 ┤ ╭──╯ + 104 ┤ ╭─╯ + 83 ┤ ╭──╯ + 62 ┤ ╭─╯ + 42 ┤ ╭──╯ + 21 ┤ ╭───╯ + 0 ┼──╯ +``` + +n^2 +=== + +```bash + 10000 ┼ ╭ + 9688 ┤ ╭╯ + 9375 ┤ ╭╯ + 9063 ┤ ╭─╯ + 8750 ┤ ╭╯ + 8438 ┤ ╭╯ + 8125 ┤ ╭╯ + 7813 ┤ ╭╯ + 7500 ┤ ╭─╯ + 7188 ┤ ╭╯ + 6875 ┤ ╭╯ + 6563 ┤ ╭─╯ + 6250 ┤ ╭╯ + 5938 ┤ ╭─╯ + 5625 ┤ ╭╯ + 5313 ┤ ╭─╯ + 5000 ┤ ╭╯ + 4688 ┤ ╭─╯ + 4376 ┤ ╭─╯ + 4063 ┤ ╭╯ + 3751 ┤ ╭─╯ + 3438 ┤ ╭─╯ + 3126 ┤ ╭─╯ + 2813 ┤ ╭─╯ + 2501 ┤ ╭──╯ + 2188 ┤ ╭─╯ + 1876 ┤ ╭─╯ + 1563 ┤ ╭──╯ + 1251 ┤ ╭───╯ + 938 ┤ ╭──╯ + 626 ┤ ╭────╯ + 313 ┤ ╭─────╯ + 1 ┼────────╯ +``` + +n^3 +=== + +```bash +モ ruby -e '1.upto(100) { |n| puts n ** 3 }' | asciigraph -h 32 -w 72 + 1000000 ┼ ╭ + 968750 ┤ ╭╯ + 937500 ┤ │ + 906250 ┤ ╭╯ + 875000 ┤ ╭╯ + 843750 ┤ ╭╯ + 812500 ┤ ╭╯ + 781250 ┤ ╭╯ + 750000 ┤ ╭╯ + 718750 ┤ │ + 687500 ┤ ╭╯ + 656250 ┤ ╭╯ + 625000 ┤ ╭╯ + 593750 ┤ ╭╯ + 562500 ┤ ╭─╯ + 531250 ┤ ╭╯ + 500000 ┤ ╭╯ + 468751 ┤ ╭╯ + 437501 ┤ ╭╯ + 406251 ┤ ╭─╯ + 375001 ┤ ╭╯ + 343751 ┤ ╭─╯ + 312501 ┤ ╭╯ + 281251 ┤ ╭─╯ + 250001 ┤ ╭─╯ + 218751 ┤ ╭─╯ + 187501 ┤ ╭─╯ + 156251 ┤ ╭──╯ + 125001 ┤ ╭──╯ + 93751 ┤ ╭───╯ + 62501 ┤ ╭───╯ + 31251 ┤ ╭───────╯ + 1 ┼─────────────────╯ +``` + +2^n +=== + +```bash +モ ruby -e '1.upto(100) { |n| puts 2 ** n }' | asciigraph -h 32 -w 72 + 1267650600228229401496703205376 ┼ ╭ + 1228036518971097232699931230208 ┤ │ + 1188422437713965063903159255040 ┤ │ + 1148808356456832895106387279872 ┤ │ + 1109194275199700726309615304704 ┤ │ + 1069580193942568557512843329536 ┤ │ + 1029966112685436388716071354368 ┤ │ + 990352031428304219919299379200 ┤ │ + 950737950171172051122527404032 ┤ │ + 911123868914039882325755428864 ┤ │ + 871509787656907713528983453696 ┤ │ + 831895706399775544732211478528 ┤ │ + 792281625142643375935439503360 ┤ │ + 752667543885511207138667528192 ┤ │ + 713053462628379038341895553024 ┤ │ + 673439381371246869545123577856 ┤ │ + 633825300114114700748351602688 ┤ │ + 594211218856982531951579627520 ┤ │ + 554597137599850363154807652352 ┤ │ + 514983056342718194358035677184 ┤ ╭╯ + 475368975085586025561263702016 ┤ │ + 435754893828453856764491726848 ┤ │ + 396140812571321687967719751680 ┤ │ + 356526731314189519170947776512 ┤ │ + 316912650057057350374175801344 ┤ │ + 277298568799925181577403826176 ┤ │ + 237684487542793012780631851008 ┤ │ + 198070406285660843983859875840 ┤ ╭╯ + 158456325028528675187087900672 ┤ │ + 118842243771396506390315925504 ┤ │ + 79228162514264337593543950336 ┤ ╭╯ + 39614081257132168796771975168 ┤ ╭╯ + 0 ┼──────────────────────────────────────────────────────────────────╯ +``` + +3^n +=== + +```bash +モ ruby -e '1.upto(100) { |n| puts 3 ** n }' | asciigraph -h 32 -w 72 + 515377520732011324194596268868618440852459487232 ┼ ╭ + 499271973209135955101707932727721296615381663744 ┤ │ + 483166425686260586008819596586824152378303840256 ┤ │ + 467060878163385298045569675052608703930231160832 ┤ │ + 450955330640509928952681338911711559693153337344 ┤ │ + 434849783117634559859793002770814415456075513856 ┤ │ + 418744235594759190766904666629917271218997690368 ┤ │ + 402638688071883821674016330489020126981919866880 ┤ │ + 386533140549008533710766408954804678533847187456 ┤ │ + 370427593026133164617878072813907534296769363968 ┤ │ + 354322045503257795524989736673010390059691540480 ┤ │ + 338216497980382426432101400532113245822613716992 ┤ │ + 322110950457507057339213064391216101585535893504 ┤ │ + 306005402934631728811143935553659805242960642048 ┤ │ + 289899855411756359718255599412762661005882818560 ┤ │ + 273794307888881031190186470575206364663307567104 ┤ │ + 257688760366005662097298134434309220426229743616 ┤ │ + 241583212843130293004409798293412076189151920128 ┤ │ + 225477665320254964476340669455855779846576668672 ┤ │ + 209372117797379595383452333314958635609498845184 ┤ │ + 193266570274504266855383204477402339266923593728 ┤ │ + 177161022751628897762494868336505195029845770240 ┤ │ + 161055475228753528669606532195608050792767946752 ┤ │ + 144949927705878159576718196054710906555690123264 ┤ │ + 128844380183002790483829859913813762318612299776 ┤ ╭╯ + 112738832660127502520579938379598313870539620352 ┤ │ + 96633285137252133427691602238701169633461796864 ┤ │ + 80527737614376764334803266097804025396383973376 ┤ │ + 64422190091501395241914929956906881159306149888 ┤ │ + 48316642568626026149026593816009736922228326400 ┤ │ + 32211095045750738185776672281794288474155646976 ┤ ╭╯ + 16105547522875369092888336140897144237077823488 ┤ │ + 0 ┼────────────────────────────────────────────────────────────────────╯ +``` + +n^n +=== + +```bash +モ ruby -e '1.upto(100) { |n| puts n ** n }' | asciigraph -h 32 -w 72 + 99999999999999996973312221251036165947450327545502362648241750950346848435554075534196338404706251868027512415973882408182135734368278484639385041047239877871023591066789981811181813306167128854888448 ┼ ╭ + 96874999999999993881068257436338693624063265494893649837925489870956970225278181471331343664445725062176639061598984569590467075190263689914928232598270195230434231246428683216594756627990091887804416 ┤ │ + 93749999999999990788824293621641221300676203444284937027609228791567092015002287408466348924185198256325765707224086730998798416012248895190471424149300512589844871426067384622007699949813054920720384 ┤ │ + 90625000000000004692996099943490907044111751072672298764272734977198756186938815758515269731196439103674964840186330296865673316722266591556553420586962491053894832136501348230021310004219026968936448 ┤ │ + 87500000000000001600752136128793434720724689022063585953956473897808877976662921695650274990935912297824091485811432458274004657544251796832096612137992808413305472316140049635434253326041990001852416 ┤ │ + 84374999999999998508508172314095962397337626971454873143640212818418999766387027632785280250675385491973218131436534619682335998366237002107639803689023125772716112495778751040847196647864953034768384 ┤ │ + 81249999999999995416264208499398490073950564920846160333323951739029121556111133569920285510414858686122344777061636781090667339188222207383182995240053443132126752675417452446260139969687916067684352 ┤ │ + 78124999999999992324020244684701017750563502870237447523007690659639243345835239507055290770154331880271471422686738942498998680010207412658726186791083760491537392855056153851673083291510879100600320 ┤ │ + 74999999999999997729984165938277124460587745659126771986181313212760136326665556650647253803529688901020634311980411806136601800776208863479538780785429908403267693300092486358386359979625346641166336 ┤ │ + 71875000000000003135948087191853231170611988448016096449354935765881029307495873794239216836905045921769797201274084669774204921542210314300351374779776056314997993745128818865099636667739814181732352 ┤ │ + 68750000000000000043704123377155758847224926397407383639038674686491151097219979731374222096644519115918923846899186831182536262364195519575894566330806373674408633924767520270512579989562777214648320 ┤ │ + 65624999999999996951460159562458286523837864346798670828722413607101272886944085668509227356383992310068050492524288992590867603186180724851437757881836691033819274104406221675925523311385740247564288 ┤ │ + 62499999999999993859216195747760814200450802296189958018406152527711394676668191605644232616123465504217177138149391153999198944008165930126980949432867008393229914284044923081338466633208703280480256 ┤ │ + 59374999999999999265180117001336920910475045085079282481579775080832287657498508749236195649498822524966340027443064017636802064774167380947793543427213156304960214729081255588051743321323170821046272 ┤ │ + 56249999999999996172936153186639448587087983034470569671263514001442409447222614686371200909238295719115466673068166179045133405596152586223336734978243473664370854908719956993464686643146133853962240 ┤ │ + 53125000000000001578900074440215555297112225823359894134437136554563302428052931829963163942613652739864629562361839042682736526362154037044149328972589621576101155353756289500177963331260601394528256 ┤ │ + 49999999999999998486656110625518082973725163772751181324120875475173424217777037767098169202353125934013756207986941204091067867184139242319692520523619938935511795533394990905590906653083564427444224 ┤ │ + 46874999999999995394412146810820610650338101722142468513804614395783546007501143704233174462092599128162882853612043365499399208006124447595235712074650256294922435713033692311003849974906527460360192 ┤ │ + 43750000000000000800376068064396717360362344511031792976978236948904438988331460847825137495467956148912045742905716229137002328772125898416048306068996404206652736158070024817717126663020995000926208 ┤ │ + 40624999999999997708132104249699245036975282460423080166661975869514560778055566784960142755207429343061172388530818390545333669594111103691591497620026721566063376337708726223130069984843958033842176 ┤ │ + 37500000000000003114096025503275351746999525249312404629835598422635453758885883928552105788582786363810335277824491254182936790360112554512404091614372869477793676782745058729843346672958425574408192 ┤ │ + 34375000000000000021852061688577879423612463198703691819519337343245575548609989865687111048322259557959461923449593415591268131182097759787947283165403186837204316962383760135256289994781388607324160 ┤ │ + 31249999999999996929608097873880407100225401148094979009203076263855697338334095802822116308061732752108588569074695576999599472004082965063490474716433504196614957142022461540669233316604351640240128 ┤ │ + 28125000000000002335572019127456513810249643936984303472376698816976590319164412946414079341437089772857751458368368440637202592770084415884303068710779652108345257587058794047382510004718819180806144 ┤ │ + 24999999999999999243328055312759041486862581886375590662060437737586712108888518883549084601176562967006878103993470602045533933592069621159846260261809969467755897766697495452795453326541782213722112 ┤ │ + 21875000000000004649291976566335148196886824675264915125234060290707605089718836027141047634551919987756040993287143465683137054358071071980658854256156117379486198211733827959508730014656249754288128 ┤ │ + 18750000000000001557048012751637675873499762624656202314917799211317726879442941964276052894291393181905167638912245627091468395180056277256202045807186434738896838391372529364921673336479212787204096 ┤ │ + 15624999999999998464804048936940203550112700574047489504601538131927848669167047901411058154030866376054294284537347788499799736002041482531745237358216752098307478571011230770334616658302175820120064 ┤ │ + 12499999999999995372560085122242731226725638523438776694285277052537970458891153838546063413770339570203420930162449949908131076824026687807288428909247069457718118750649932175747559980125138853036032 ┤ │ + 9374999999999992280316121307545258903338576472830063883969015973148092248615259775681068673509812764352547575787552111316462417646011893082831620460277386817128758930288633581160503301948101885952000 ┤ │ + 6250000000000006184487927629394944646774124101217425620632522158779756420551788125729989480521053611701746708749795677183337318356029589448913616897939365281178719640722597189174113356354073934168064 ┤ │ + 3125000000000003092243963814697472323387062050608712810316261079389878210275894062864994740260526805850873354374897838591668659178014794724456808448969682640589359820361298594587056678177036967084032 ┤ │ + 0 ┼──────────────────────────────────────────────────────────────────────╯ +``` |
