summaryrefslogtreecommitdiff
path: root/notes.md
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2021-11-06 17:23:25 -0600
committermo khan <mo@mokhan.ca>2021-11-06 17:23:25 -0600
commit9fb1a62139a7f32c3377a4701fb0b256df6a9d9e (patch)
tree16b4925bad58b5b749402a431b74848da9531298 /notes.md
parentce8a91167617917e99d9b370aac37bb24339093e (diff)
plot each class of functions
Diffstat (limited to 'notes.md')
-rw-r--r--notes.md376
1 files changed, 376 insertions, 0 deletions
diff --git a/notes.md b/notes.md
index cb11821..8340805 100644
--- a/notes.md
+++ b/notes.md
@@ -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 ┼──────────────────────────────────────────────────────────────────────╯
+```