From Wikipedia, the free encyclopedia
Binäärinen logaritmi eli kaksikantainen logaritmi (log2 n) on logaritmi, jonka kantaluku on 2. Se on funktion käänteisfunktio ja osoittaa, mihin potenssiin luku 2 on korotettava, jotta saadaan annettu luku. Toisin sanoen:
Esimerkiksi luvun 1 binäärinen logaritmi on 0, luvun 2 binäärinen logaritmi on 1, luvun 4 binäärinen logaritmi on 2, luvun 8 binäärinen logaritmi on 3 ja luvun 16 binäärinen logaritmi 4.
Binäärinen logaritmi liittyy läheisesti binäärilukujärjestelmään. Historiallisesti ensimmäinen binäärisen logaritmin sovellusala oli kuitenkin musiikin teoria, johon sitä sovelsi Leonhard Euler. Muita aloja, joissa binääristä logaritmia paljon käytetään, ovat informaatioteoria, kombinatoriikka, tietojenkäsittelytiede, bioinformatiikka, urheilukilpailujen suunnittelu ja valokuvaus.
Michael Stifel julkaisi vuonna 1544 kahden potensseista taulukon, jota voidaan sen rivit kääntämällä käyttää myös binääristen logaritmien taulukkona.[1] Binääristen logaritmien sovellukset musiikin teoriassa esitti Leonhard Euler vuonna 1739, kauan ennen kuin nykyaikainen informaatioteoria ja tietojenkäsittelytiede saivat alkunsa. Osana tätä alaa koskevasta tutkimuksestaan Euler laati taulukon kokonaislukujen 1...8 binäärisistä logaritmeista seitsemän desimaalin tarkkuudella.[2][3]
Matematiikassa luvun n binäärinen logaritmi merkitään log2 n. Varsinkin sovellusaloilla sille kuitenkin käytetään tai on ehdotettu useita muitakin merkintätapoja.
Joskus binääriselle logaritmille käytetään merkintää lg n.[4][5] Donald Knuth on väittänyt tätä merkintää Edward Reingoldin keksimäksi,[6] mutta sitä on käytetty sekä informaatioteoriassa että tietojenkäsittelytieteessä jo ennen Reingoldia.[7][8] Joissakin teoksissa binäärinen logaritmi on merkitty myös log n, sen jälkeen kun on sanottu, että jäljempänä logaritmien oletuskantaluku on 2.[9][10][11]
Toinen varsinkin saksankielisessä kirjallisuudessa usein esiintyvä merkintä samalle funktiolle on ld n, joka tulee sen latinalaisesta nimityksestä logarithmus duālis.[12] ISO:n standardien ISO 31-11 ja ISO 80000-2 mukaan se tulisi merkitä lb n; kun taas lg n merkitsee luvun n kymmenkantaista eli Briggsin logaritmia log10 n. Tämä ISO:n suosittelema binäärisen logaritmin merkintä ei kuitenkaan ole tullut yleiseen käyttöön.
Numeroiden (bittien) lukumäärä positiivisen kokonaisluvun n binääriesityksessä on luvun n binäärisen logaritmin kokonaisosa lisättynä yhdellä, toisin sanoen[5]
Informaatioteoriassa informaatiosisällön ja informaatioentropian määritelmät esitetään usein binäärisen logaritmin avulla, mikä vastaa bitin merkitystä informaation perusyksikkönä. Joskus ne kuitenkin määritellään luonnollisen logaritmin avulla, jolloin informaation yksikkönä on nat.[13]
Vaikka luonnollinen logaritmi on binääristä logaritmia tärkeämpi monilla puhtaan matematiikan aloilla kuten lukuteoriassa ja matemaattisessa analyysissä, binäärisellä logaritmilla on useita sovelluksia kombinatoriikassa:
Binäärinen logaritmi esiintyy usein myös algoritmien analyysissä,[11] ei vain siksi, koska niissä usein käytetään binäärilukujen aritmetiikkaan, vaan myös koska binäärisiin logaritmeihin päädytään analysoitaessa kahtia haarautuvia algoritmeja.[6] Jos tehtävällä on alun perin n ajateltavissa olevaa ratkaisua ja joka kerta, kun algoritmin tietty osa toistetaan, mahdollisuuksien lukumäärä puoliintuu, toistojen lukumäärä yhteen yksikäsitteiseen ratkaisuun päätymiseksi on jälleen log2 n:n kokonaisosa. Tätä ajatusta käytetään useita algoritmeja ja tietorakenteita analysoitaessa. Esimerkiksi binäärihaussa ratkaistavan tehtävän laajuus puoliintuu jokaisella toistokerralla ja sen vuoksi puolitus on toistettava suunnilleen log2n, ennen kuin päädytään koon 1 tehtävään, joka ratkeaa helposti vakioajassa. Samaan tapaan sellaisen täydellisesti tasapainotetun binääripuuhaun, jossa on n alkiota, korkeus on log2 n + 1.
Algoritmien suoritusaika ilmaistaan kuitenkin tavallisesti iso O -merkinnällä, jossa vakiotekijät jätetään pois. Koska log2 n = (logk n)/(logk 2), missä k voi olla mikä tahansa yhtä suurempi luku, algoritmien, jotka voidaan suorittaa ajassa O(log2 n), voidaan myös sanoa olevan suoritettavissa esimerkiksi ajassa O(log13 n). Logaritmin kantaluku sen tapaisissa lausekkeissa kuin O(log n) tai O(n log n) ei sen vuoksi ole merkityksellinen.[4] Muissa yhteyksissä logaritmin kantaluku on kuitenkin määritettävä. Esimerkiksi O(2log2 n) ei ole sama kuin O(2ln n), koska edellinen on yhtä kuin O(n) ja jälkimmäinen yhtä kuin O(n0.6931...).
Algoritmeja, joiden suoritusaika on O(n log n), sanotaan joskus linearitmisiksi.[16] Joitakin esimerkkejä algoritmeista, joiden suoritusaika on O(log n) tai O(n log n) ovat:
Bioinformatiikassa mikroruudukoita analysoitaessa geenien sisältämän informaation määriä vertaillaan usein informaatiomäärien suhteen binäärisen logaritmin avulla. Käyttämällä logaritmille kantalukua 2 esimerkiksi kaksinkertainen informaatiosisältö vastaa logaritmien erotusta 1, puoliintunut informaatiosisältö voidaan ilmaista logaritmien erotuksella -1, ja muuttumattomana pysynyt sisältö logaritmien erotusta 0.[21] Tällä tavalla saadut datapisteet visualisoidaan usein pistekaaviolla, jossa jompikumpi tai molemmat koordinaattiakselit ovat binäärisiä logaritmisia asteikkoja.
Musiikin teoriassa kahden sävelen välisen havaittavan eron eli intervallin määrittelee niiden taajuuksien suhde. Kun tämä suhde on ilmaistavissa murtoluvulla, jonka osoittaja ja nimittäjä ovat pieniä lukuja, sävelet sointuvat hyvin yhteen eli kyseessä on konsonanssi. Yksinkertaisin ja tärkein tällainen intervalli on oktaavi, jossa taajuuksien suhde on 2:1. Kaksi säveltä ovat niin monen oktaavin päässä toisistaan kuin niiden taajuuksien suhteen binäärinen logaritmi osoittaa.[22]
Viritysjärjestelmiä ja muita musiikin teorian piirteitä tutkittaessa tarvitaan usein tarkempia lukuarvoja sävelten korkeuserolle. Tällöin on edullista käyttää intervallille mittaa, joka on tarkempi kuin oktaavi ja joka on logaritmien tavoin additiivinen eikä multiplikatiivinen, jollainen taajuuksien suhde on. Toisin sanoen jos sävelet muodostavat nousevan säveljonon, sävelten x ja y sekä sävelten y ja z välisten intervallien mittalukujen summan tulisi olla sama kuin sävelten x ja y välisen intervallin mittaluku. Eräs sellainen mittayksikkö on sentti, joka on tasavireisen puoliaskeleen sadasosa eli 1/1200 oktaavia. Jos sävelten taajuudet ovat f1 ja f2, niiden välisen intervallin suuruus sentteinä on[22]
Millioktaavi määritellään muutoin samalla tavalla, mutta kertoimen 1200 sijasta käytetään kerrointa 1000.
Kilpailupeleissä ja urheilulajeissa, joissa kuhunkin otteluun osallistuu kaksi kilpailijaa tai joukkueita, binäärinen logaritmi ilmoittaa niiden kierrosten lukumäärän, joka pudotuspelissä on käytävä, ennen kuin loppuottelussa selviää koko kilpailun voittaja. Jos esimerkiksi pelaajia on 4, voittajan selvittämiseksi tarvitaan log2(4) = 2 kierrosta, ja jos joukkueita on 32, kierroksia tarvitaan log2(32) = 5 ja niin edelleen. Jos pelaajien tai joukkueiden lukumäärä n ei ole kahden potenssi, log2n on pyöristettävä ylöspäin kokonaisluvuksi, sillä tarvitaan ainakin yksi kierros, johon eivät kaikki jäljellä olevat kilpailijat osallistu. Esimerkiksi log2(6) on noin 2,585, ylöspäin pyöristettynä 3, mikä osoittaa, että jos kilpailuun osallistuu 6 joukkuetta, joko niistä kaksi ei ole mukana ensimmäisellä kierroksella tai yksi ei osallistu toiselle kierrokselle. Sama lukumäärä kierroksia tarvitaan myös voittajan ratkaisemiseksi sveitsiläisessä järjestelmässä.[23]
Valokuvauksessa valotusarvot mitataan filmiin tai sensoriin osuvan valomäärän binäärisenä logaritmina, mikä perustuu Weberin–Fechnerin lakiin, jonka mukaan ihmisen silmä reagoi valomäärään logaritmisesti. Valotukselle käytetäänkin kaksikantaista logaritmista asteikkoa[24][25] Täsmällisemmin sanottuna valokuvan valotusarvon on
Binäärisiä logaritmeja käytetään myös densitometriassa, ilmaisemaan suurimman ja pienimmän valomäärän suhdetta, jolla valoherkkä materiaali tai digitaalinen sensori on käyttökelpoinen.[26]
Nykyaikaisissa laskimissa on yleensä näppäimet luonnollisen ja Briggsin logaritmin, mutta ei binäärisen logaritmin laskemiseksi. Näiden avulla voidaan kuitenkin myös binäärinen logaritmi laskea käyttämällä logaritmijärjestelmien välisiä muunnoskaavoja:[25][27]
tai likimäärin
Binäärinen logaritmi voidaan muotoilla funktioksi kokonaisluvuilta kokonaisluvuille pyöristämällä se ylös tai alas. Nämä kaksi kokonaislukuarvoista binääristä logaritmia liittyvät toisiinsa seuraavan kaavan välityksellä:
[28] Näin laajennettuna funktio liittyy läheisesti etunollien lukumäärään x:n etumerkittömässä binääriesityksessä nlz(x). Määritelmää voidaan laajentaa sopimalla, että . Saatu funktio on:
Kokonaislukuarvoinen binäärinen logaritmi voidaan tulkita syötteen tärkeimmän arvon 1 saaneen bitin järjestysluvuksi, kun numerointi aloitetaan nollasta. Monet laitteistoalustat tukevat etunollien lukumäärän laskemista tai vastaavia laskutoimituksia, joiden avulla voidaan nopeasti määrittää binäärinen logaritmi. Linux-ytimessä ja joissakin libc-ohjelmistokirjaston versioissa funktiot fls
ja flsl
[29] laskevat myös binäärisen logaritmin pyöristettynä ylöspäin kokonaisluvuksi, johon lisätään yksi.
Positiivisen reaaliluvun binäärinen logaritmi voidaan laskea kahdessa vaiheessa:[30]
Kokonaisosan laskenta on suoraviivaista. Jokaista lukua x > 0, kohti on yksi ja vain yksi sellainen kokonaisluku n, että 2n ≤ x < 2n+1, tai yhtäpitävästi 1 ≤ 2−nx < 2. Logaritmin kokonaisosa on yksinkertaisesti n, ja desimaaliosa on log2(2−nx).[30] Toisin sanoen:
Tuloksen kokonaisluvun ylittävä osa on , ja se voidaan laskea rekursiivisesti pelkkien kerto- ja jakolaskujen avulla.[30] Tämä käy päinsä seuraavasti:
Tämän tuloksen osoittavat seuraavat kaavat, joissa on tarvittavien neliöön korotusten lukumäärä algoritmin i:nnellä rekursiokerralla:
Siinä erikoistapauksessa, että kokonaisluvun ylittävä osa kohdassa 1 osoittautuu nollaksi, kyseessä on äärellinen sarja, joka päättyy joskus. Muussa tapauksessa kyseessä on päättymätön sarja, joka suppenee, sillä jokainen termi on aidosti pienempi kuin edellinen (sillä jokainen ). Käytännössä tämä ääretön sarja on katkaistava jossakin kohdassa, jolloin saadaan sopiva likiarvo. Jos sarja katkaistaan i:nnen termin jälkeen, tuloksen virhe on pienempi kuin .
Vaihtoehtoinen algoritmi, joka tuottaa jokaisella toistokerralla yhden bitin lisää käyttämällä vaihto- ja vertailuoperaatiota, on myös mahdollinen.[31]
C-ohjelmointikielen standardin mukaiseen matemaattisten funktioiden kirjastoon sisältyy funktio log2
, joka laskee annetun luvun binäärisen logaritmin. Oletusarvoisesti funktio laskee logaritmin kaksoistarkkuusargumentille, mutta sen jotkin versiot sallivat argumentille yksinkertaisen tarkkuuden tai se voi olla myös long double.[32]
Tämä artikkeli tai sen osa on tuotu vieraskielisestä lähteestä ja käännös on keskeneräinen. Voit auttaa Wikipediaa tekemällä käännöksen loppuun. |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.