AlgoritmiAlgoritmi on tarkasti määritelty vaihesarja, jota seuraamalla voidaan ratkaista tietty ongelma.
J. G. Brookshear: "Tarkasti ottaen algoritmi on äärellinen joukko täsmällisiä, suoritettavissa olevia ohjeita, jotka ohjaavat päättyvää tehtävän suoritusta."
Koska algoritmin käsite on laaja, algoritmit eivät liity pelkästään tietokoneisiin tai tietojenkäsittelytieteeseen, jossa niiden merkitys on erityisen suuri tietorakenteiden yhteydessä.
Esimerkiksi keittokirja on oikeastaan kokoelma algoritmeja, joita seuraamalla ruoanlaiton pitäisi onnistua. Vastaavasti koottavan kirjahyllyn mukana pitäisi tulla algoritmi, jonka avulla palasista saa rakennettua toimivan kirjahyllyn. Todellisuudessa algoritmit ovat kuitenkin usein monimutkaisempia ja sisältävät esimerkiksi toistoja ja haarautumia loogisen päättelyn perusteella. Tietokoneohjelmien toiminta perustuu kehittyneisiin ohjelmointikielillä ilmaistuihin algoritmeihin.
Sana algoritmi tulee arabialaisen matemaatikon ja tähtitieteilijän Muhammed ibn-Musa al-Khwarizmin nimestä.
Muutamia algoritmeja
- Hakualgoritmit
- Lajittelualgoritmit
- Tiivistealgoritmit (engl. message-digest)
- Pakkausalgoritmit
- Merkkijonohakualgoritmit
- A - -algoritmi
Myös äänen- ja kuvanpakkaukseen liittyvät koodekit käyttävät erilaisia algoritmeja.
Matemaattisia algoritmeja:
- Eukleideen algoritmi
- Neliöjuurialgoritmit
Katso myös
- Asymptoottinen suoritusaika
- Tiedonpakkaus
- Videonpakkaus
- Äänenpakkaus
- Puheen pakkaaminen
luokka:tietotekniikka
luokka:algoritmit
luokka:ohjelmistotiede
ko:알고리즘
ja:アルゴリズム
th:อัลกอริทึม
Tietokone
::Tämä artikkeli käsittelee laitetta. Tietokone (lehti) käsittelee lehteä.
Tietokone on kone, joka käsittelee numeeris-loogista tietoa ohjelmointinsa mukaisesti. Arkikielessä tietokoneella tarkoitetaan yleensä yleiskäyttöistä laitetta, joka on tarkoitettu suorittamaan kaikenlaisia tietojenkäsittelytehtäviä. Esimerkiksi pelikonsolit, matkapuhelimet ja taskulaskimet ovat usein ominaisuuksiensa puolesta täysiverisiä tietokoneita, vaikka niitä ei käyttötarkoitustensa vuoksi yleensä pidetäkään sellaisina.
Eräs tietokoneen matemaattinen malli on Turingin kone, jonka kehitti englantilainen matemaatikko Alan Turing. Tietojenkäsittelyn ekvivalenssiperiaatteen mukaan kaikki tietokoneet pystyvät suoriutumaan samoista tehtävistä, mikäli käytössä on riittävästi tallennustilaa ja aikaa. Näin ollen mikäli koneella tai formaalilla järjestelmällä (esimerkiksi ohjelmointikielellä) voi toteuttaa Turingin koneen, voi sillä periaatteessa toteuttaa myös minkä tahansa algoritmin tai ohjelman.
Tietokoneiden edeltäjinä voidaan pitää toisaalta reikäkorttien käsittelyyn tarkoitettuja reikäkorttikoneita, toisaalta esimerkiksi mekaanisia laskimia. Ensimmäiset varsinaiset ohjelmoitavat tietokoneet rakennettiin 1940-luvulla ja niitä käytettiin mm. toisen maailmansodan aikaan salakirjoitusten murtamiseen (brittiläinen Colossus), ohjusten ratojen laskentaan (amerikkalainen ENIAC) ja lentokonesuunnittelun lujuuslaskentoihin (saksalainen Z3).
Tietokoneen toiminta
Vaikka tietokoneen pystyykin toteuttamaan lukemattomilla eri tekniikoilla, on valtaosa tietokoneista kautta historian perustunut elektronisiin piireihin, joiden alkeellisimmat perusosat suorittavat Boolen algebraan kuuluvia perusoperaatioita. Koska Boolen algebra perustuu kahteen totuusarvoon, on luontevaa käyttää niitä kaiken käsiteltävän tiedon ilmaisemiseen: esimerkiksi lukuja on teknisesti yksinkertaisinta käsitellä, jos ne on esitetty binäärijärjestelmän avulla. Yksittäisestä totuusarvosta (binäärijärjestelmän numerosta 1 tai 0) käytetään nimitystä bitti.
Useimmat tietokoneet toteuttavat John von Neumannin mallia, jossa sekä ohjelma että sen käsittelemä tieto ovat muistiin tallennettua dataa. Tietokone suorittaa ohjelmaa yleensä lukemalla peräkkäisiä muistipaikkoja ja tulkitsemalla lukemansa bittijonot konekielisiksi käskyiksi. Konekielikäsky suorittaa yleensä jonkin yksinkertaisen alkeisoperaation, kuten bittijonon lukemisen muistipaikasta, kahden bittijonon välisen yhteenlaskun tai ohjelman suoritusosoitteen ehdollisen vaihtamisen.
Konekielikäskyjä suorittavaa tietokoneen osaa kutsutaan suorittimeksi eli prosessoriksi, joka on nykyään yleensä alaltaan muutamien neliösenttimetrien kokoinen integroitu piiri. Henkilökohtaisissa tietokoneissa on tyypillisesti vain yksi suoritin, mutta suurissa palvelimissa ja supertietokoneissa niitä voi olla jopa useita tuhansia.
Suorittimien lisäksi tietokoneessa on yleensä myös muita piirejä, jotka suorittavat erikoistuneempia tietojenkäsittelytehtäviä ja vapauttavat siten varsinaiset suorittimet näistä tehtävistä, esimerkiksi:
- Levyohjain, joka kopioi tietoa keskusmuistin ja kiintolevyn välillä.
- Näytönohjain, joka muuttaa näyttömuistiin tallennetun kuvan näyttölaitteelle sopivaksi ajoitetuksi signaaliksi. Monet näytönohjaimet osaavat myös itse piirtää grafiikkaa näyttömuistiin.
Vaikka kaikki tietokoneet pystyvätkin periaatteessa suorittamaan samat tehtävät, ovat jotkut tietokoneet huomattavasti soveltuvampia joihinkin tehtäviin kuin toiset. Suorituskykyä erityyppisissä tehtävissä mitataan ns. benchmark-testeillä. Riittävän suorituskyvyn lisäksi merkittäviä tekijöitä ovat mm. koneen vakaus, vikasietoisuus, virrankulutus, fyysinen koko, ohjelmistoyhteensopivuus sekä hankinta- ja käyttökustannukset.
Arkipuheessa tietokoneiden "paremmuutta" vertaillaan usein vertailemalla suoraan esimerkiksi suorittimien kellotaajuuksia. Kellotaajuus voi antaa suurpiirteisen vihjeen esimerkiksi PC-työaseman teknisestä iästä ja siten sen yleisestä suorituskyvystä ja luotettavuudesta useimmissa tehtävissä, mutta pelkkiin numeerisiin suureisiin katsominen voi esimerkiksi koneen ominaisuuksia arvioitaessa olla hyvinkin harhaanjohtavaa.
Tietokoneen arkkitehtuuri
Tietokonejärjestelmään kuuluvat
- ohjelmisto, "pehmo", "softa", (engl. :en:software).
- laitteisto, "rauta", (engl. :en:hardware) ja
Ohjelmisto jaetaan edelleen
- kiinteisiin eli valmiisiin ohjelmiin, "valmo" (engl. :en:firmware),
- käyttöjärjestelmän (esim. Microsoft Windows tai GNU/Linux) ja
- käyttöjärjestelmän päällä toimiviin sovellusohjelmiin (esim. Open Office).
Tietokoneen laitteiston von Neumannin arkkitehtuuri on säilynyt suunnilleen samana aina 1940-luvulta asti. Se on saanut nimensä ENIACin rakentamiseen osallistuneen John von Neumannin mukaan. Siihen kuuluu:
- suoritin, (engl. processor), joka suorittaa ohjelmaa
- muisti, (engl. data storage), johon tallennetaan sekä ohjelmat että niiden käyttämät tiedot
- oheislaitteet, (engl. peripheral device), tiedon syöttöön ja tulostukseen
Pöytätietokoneen osat
Nykyaikaisen pöytämallisen työasema- tai kotitietokone laitteisto koostuu erillisistä osista, joita ovat tyypillisesti:
- yksi tai useampi suoritin
- muisti
- emolevy
- näytönohjain (joko emolevyllä tai erillisenä korttina)
- ääniohjain (joko emolevyllä tai erillisenä korttina)
- massamuisti
- yksi tai useampi kiintolevy
- Kirjoittava DVD-asema
- ohjauslaitteet
- näppäimistö
- hiiri
- yksi tai useampi näyttö
- tietoliikenneyhteyden (esim. Internet) mahdollistava laite (yleensä verkkokortti tai modeemi)
- tulostin
- kuvanlukija eli skanneri
Lisäksi tarvitaan osia, joita ei käytetä tiedonkäsittelyyn, kuten
- kotelo
- virtalähde
- muiden osien jäähdytykseen tarvittavat tuulettimet tai vesijäähdytysjärjestelmä
Tietokoneiden käytöstä
Ensimmäiset tietokoneet 1940- luvulla oli tehty sotilaallisiin tarkoituksiin, mm. Saksan ja Japanin salakirjoitusjärjestelmien murtamiseen.
Tietokonetta käytetiin aluksi keskeisesti laskemiseen (vrt. engl. computer). ENIAC (385 kertolaskua sekunnissa) pystyi korvaamaan kertolaskussa (noin 1 kertolasku per minutti per ihminen) noin 23 000 ihmistä. Nykyinen mikroprosessori on edelleen noin 3 000 000 kertaa ENIAC:ia nopeampi, eli korvaa kertolaskuissa noin 60 miljardia ihmistä.
Myöhemmin oivallettiin että ykkösillä ja nollilla voitiin kuvata mitä tahansa: tekstiä (tekstinkäsittely), kuvia (kuvien käsittely), sanomia, kirjoja, arkistoja, maastoa, rakennuksia jne.
Tietokone ohjaa monesti laajoja järjestelmiä, esim. tietokoneohjattua tuotantoa, ase-, tiedustelu- tai johtamisjärjestelmää, liikennevaloja, puhelinkeskuksia, Internetin reitittimiä, autoja, pesukoneita, lähes kaikkia teknisiä järjestelmiä. Nykyaikaisen yhteiskunnan teknologinen pohja on keskeisesti tietokonetekniikkaa.
Tietokoneen kapasiteetin kasvu on jatkuvasti yllättänyt asiantuntijat. Aikojen saatossa ovat asiantuntijoina pidetyt henkilöt lausuneet monia väitteitä, jotka tulevaisuus on osoittaneet vääriksi, esimerkiksi
- "Maailmassa on markkinoita ehkä viidelle tietokoneelle."
- "En näe mitään käyttöä tietokoneille kotona."
- "640 kilotavun pitäisi riittää kaikille.
Tietyssä viitekehyksessä nämä ovat joskus ehkä voineetkin pitää paikkansa.
Šakin peluuta pidettiin pitkään niin ihmismäisenä toimintona, että tietokoneen ei ajateltu koskaan pystyvän siihen.
Merkittävä tapaus tietokoneen historiassa oli myös Toy story- elokuva, joka oli tehty täysin tietokoneella, tietokoneanimaationa.
Tietokonesukupolvet
Tietokoneiden sukupolvien teknologisia vaiheita ovat olleet:
- putkikoneet
- transistorikoneet
- mikropiirikoneet ja
- mikroprosessorikoneet.
Ensimmäiset elektroniset tietokoneet 1940- luvun lopussa perustuivat releisiin ja elektroniputkiin, hitaisiin, epäluotettaviin, suurta energiakulutusta edustaviin ja suuriin komponentteihin. Colossus oli ensimmäinen elektroninen yleiskäyttöinen tietokone, joka rakennettiin Britanniassa Natsien viestiliikentessä käytetyn salauksen purkamiseen. Koska kyse oli tiedustelu toiminnasta, Britannian hallituksen salassapitomääräys koski myös Colossusta. ENIAC oli Yhdysvaltain ensimmäinen täysin elektroninen yleiskäyttöinen tietokone. Sen käyttö tarkoitus oli tykistön ampumataulukoiden laskenta, mitä ei luokiteltu sodanjälkeen salaiseksi ja näin ollen ENIAC:iin liittynyt dokumentaatio voitiin julkistaa heti 2. maailmansodan päätyttyä
Siirtyminen 1950- luvulla puolijohteisiin perustuviin transistoreihin pienensi oleellisesti komponettien kokoa ja energian tarvetta sekä lisäsi luotettavuutta.
Siirtyminen 1960- luvulla mikropiirehin pienensi jälleen tietokoneen komponenttien kokoa. Alkoi Mooren lakina tunnettu kehitys, jossa samalle mikropiirille saatiin kaksinkertainen komponenttimäärä puolessatoista vuodessa.
Seuraava mullistus oli mikroprosessorin keksiminen. Mikroprosessorin avulla syntyi henkilökohtainen tietokone, PC.
1980- ja 1990- luvuilla siirryttiin suurtiheyksisiin mikropiireihin (VLSIC) ja edelleen suurnopeuksisiin mikropiireihin (VHSIC).
Tietokoneiden sukupolvien suurvaiheita ovat olleet:
- suurtietokone (1965 - 1975) (mainframe)
- minikone (1975 - 1985)
- palvelin (1985 - 1995)
- verkko (1995 - ?)
- verkko + pääte (2000 - ?)
Mikroprosessori, suoritin
Mikroprosessori on tietokoneen keskusyksikkö, aivot, yhdellä mikropiirillä. Ensimmäinen mikroprosessori, Intelin 4004 vuodelta 1971 sisälsi noin 2300 transistoria. Sen kellotaajuus, nopeus oli 0,1 MHz:iä, kerralla käsitteltävän tiedon leveys 4 bittiä (yksi numero) ja se pystyi käsittelemään 0,06 miljoonaa käskyä sekunnissa.
Kolmekymmentä vuotta myöhemmin, vuonna 2001 uusin mikroprosessori Intelin perheessä oli Itanium. Se sisälsi noin 25.000.000 transistoria, sen kellotaajuus oli 733 MHz:iä, kerralla käsisteltävän tiedon leveys oli 64 bittiä (16 numeroa) ja Itanium pystyi suorittamaan 7491 miljoonaa käskyä sekunnissa.
Luvut ovat murskaavia. Ihmiskunnan tekniikan historiassa ei ole vastaavaa ilmiötä. Tästä voidaan päätellä, että ihmiskunnan tekniikan historiassa eletään poikkeuksellisia aikoja.
Tietokoneen aiheuttamia muutoksia
1. Yksityisyys vaarassa. Mikroprosessori on luomassa ennen näkemättömän mahdollisuuden yhdistellä ja saada tieto eri lähteistä. Tämä kehitys uhkaa ihmisten yksityisyyttä. Lääke tähän on mikroprosessori ja sen antama mahdollisuus tietojen tehokkaaseen ja halpaan salaamiseen.
2. Elektroninen työpaikka. Aluksi työpaikka muuttui melko vähän. Sitten halvat työryhmäohjelmat ja tietokoneverkot muuttivat työtä enemmän. Johto pystyy johtamaan useampaa ja erilaisempaa työryhmää tehokkaasti. Hyvät uutiset ovat se, että toimistokoneet eivät koskaan ole olleet näin halpoja. Huonot uutiset ovat se, että ihmisten etenemismahdollisuudet pienenevät, kun johtajia tarvitaan vähemmän.
3. Aivokuvaus kaikille. Kolmiulotteiset tomografia- laitteet vaativat laskentakapasiteetin, joka oli toteutettavissa vain kalliilla minitietokoneilla. Nyt sama kapasiteetti löytyy tehokkaimmista mikroista.
4. Uutistuotannosta tulee yhteistoimintaa. Aiemmin uutiset tulivat suurista uutistoimistoista. Nyt sähköpostijärjestelmät ja elektroniset keskustelufoorumit tarjoavat uutisaiheita valtavan turhan tiedon lisäksi. Reportterit saavat paljon sähköpostia ulkopuolisilta. Uutispohja kasvaa.
5. DNA-mysteerit paljastuvat. Ihmisperimän molekyyliketjujen laskenta on synnyttänyt uuden laskennallisen molekyylibiologian. Sairastumisherkkyys ja perinnölliset taudit voidaan kartoittaa. Ja vakuutusyhtiöt voivat tutkia, ketä kannattaa vakuuttaa.
6. Sähköposti luo demokratiaa. Se korvaa hierarkkisen johtamisportaikon ja mahdollistaa suoran tiedon alhaalta ylös (vrt kohta 3).
7. Älykkäämmät autot hallitsevat maanteitä. Moottorit käyttävät vähemmän polttoainetta ja antavat paremman tehon. Tarve säätää moottoria huollon yhteydessä on mennyttä aikaa. Omia käyttöjärjestelmiä yhdistämään tavallisen auton noin tusina mikroprosessoria tutkitaan. Tiedon valtatie autossa.
8. Luottoa kaikille. Kymmenen vuotta sitten luottokorttiostosten tarkistaminen oli hankalaa ja työlästä. Nyt jokaisen ostoksen automaattinen tarkastus on mahdollista heti, ja ennen kaikkea halvalla. Vuonna 1990 Visan tietoverkoissa maksettiin 174 miljardilla dollarilla, vuonna 1994 293 miljardilla, joka tarkoittaa 17 prosentin vuosikasvua.
9. Maailmanlaajuinen äänivalinta. Kännykkä on käytännössä mikrotietokone, johon on liitetty antenni ja joka on optimoitu signaalien välittämiseen. Uudet matkapuhelinverkot tarjoavat uusille valtiolle mahdollisuuden kivikaudesta suoraan uusimpaan tekniikkaan.
10. Animaatio avaa uuden ulottuvuuden. Elokuva Toy Story tehtiin pienimmällä henkilöstöllä kuin mikään aikaisempi animaatioelokuva. Silicon Graphicsin työasemien koneaikaa kului 800 000 tuntia ja tuloksena oli 500 Gigatavua tietoa, jonka yleisö näki filminä.
11. Tietokone ja digitaalinen signaalinkäsittely on aivan keskeinen osa nykyaikaisinta tavanomaista sodankäyntiä. Tietokoneeseen perustuvat mm. täsmäase, AWACS, JSTARS, GPS, tietoliikenne ja suuri osa tiedustelua
12. Laajimmillaan tietokone nähdään uuden tieteellisen paradigman mahdollistajana. Tällöin tietokone on avaa ihmiselle kompleksisuuden maailman samalla tavalla kuin mikroskooppi avasi pienuuden maailman ja kaukoputki suuruuden maailman. Tietokone tutkimusvälineenä mahdollistaa mm. kokonaisuuksien uudenlaisen tutkimuksen osiin keskittymisen sijasta. Tätä tietokoneiden aiheuttamaa muutosta on käsitellyt mm. amerikkalainen filosofi ja fyysikko Heinz R. Pagels.
Tietokoneen tulevaisuudesta
Mooren laki jatkunee vielä jonkin aikaa, eli tietokoneiden kehitys jatkuu ainakin nykyisenlaisena. Tämä kehitys merkitsee:
- teknisen älykkyyden radikaalin kasvun jatkumista (ks. Epistemologia/Tekninen ja inhimillinen tieto)
- yhä älykkäämpien, suurempien ja reaaliaikaisempien tehtävien siirtymistä tietokoneille
- tekniikan ja ihmiskunnan tietokoneistumista
Tietokoneiden tulevaisuus on tietokoneverkoissa. Mullistusta tietokonetekniikassa on esitetty kvanttitietokoneista. Tietokone muuttaa ehkä ihmiskunnan kehityksen suunnan. Yksi tällainen suunta on transhumanismi.
Kirjallisuutta
- Martin Davis: Tietokoneen esihistoria Leibnizista Turingiin. Art House, 2003. ISBN 951-884-364-3
Katso myös
- Tietotekniikka
- Kannettava tietokone
- Tietokoneverkot
- Supertietokone
- Sulautettu tietokone
- Tekninen ja inhimillinen tieto
- Tietokonesimuloinnin keinot
- Tallennettu tieto
- Tietokoneiden vertailu 1940 - 2000
- Tietokoneet ja mallintaminen Neuvostoliiton kaatamisessa
- Suomen ensimmäiset tietokoneet
- PC
- Macintosh
Luokka:Tietotekniikka
Luokka:Matemaattiset apuvälineet
ms:Komputer
ko:컴퓨터
ja:コンピュータ
simple:Computer
TietorakenneTietorakenne on tietojenkäsittelyssä esiintyvä termi, ja sillä tarkoitetaan abstraktia ohjelmointikielen primitiiveistä koostuvaa rakennetta, johon tieto on tallennettu. Esimerkkejä tietorakenteista ovat mm. pino, jono, linkitetty lista, hajautustaulu ja puu.
Tietorakenteet liittyvät läheisesti algoritmeihin, ja kumpienkin valinta ohjelmistoja suunniteltaessa on varsin merkittävä.
Luokka:Ohjelmistotiede
ko:자료구조
ja:データ構造
th:โครงสร้างข้อมูล
TietokoneohjelmaTietokoneohjelma on tietokonelaitteiston tulkitsemassa muodossa oleva suoritettava ohjelma, sarja ohjeita. Ohjeet muodostuvat tietokoneessa konekielisistä käskyistä ja niistä rakentuvista suuremmista kokonaisuuksista, esim aliohjelmista, joita sitoo yhteen ohjelman runko. Myös ohjelman runko on tietokoneessa konekielinen.
Tietokoneohjelma käsittelee tiettyä itsenäistä kokonaisuutta, sovellutusta, esim. tekstinkäsittelyohjelma. Tietokoneohjelman osia ovat ohjelman runko ja aliohjelmat, jotka käsittelevät ohjelman jotain osaa, esim tekstinkäsittelyssä kursorin liikettä ja hallintaa.
Tietokoneohjelmisto muodostuu useammasta yhteenliitetystä itsenäisestä ohjelmasta. Kyse on samasta asiasta kuin suhteessa: huone - huoneisto. Esim. tekstinkäsittelyohjelmisto muodostuu:
- kirjoitusohjelmasta (näppäimen ja näytön ohjaus)
- oikolukuohjelmasta
- tulostususohjelmasta
- kielioppiohjelmasta jne.
Ohjelmiston ohjelmalle on luonteenomaista, että se toimii myös itsenäisenä, ilman ohjelmiston muiden ohjelmien tukea. Teksti voidaan esim. tulostaa ilman sen muokkausta.
Oleellisin ohjelmisto on käyttöjärjestelmä. Käyttöjärjestelmään liittyy myöskin läheisesti erilaiset apuohjelmat. Näiden lisäksi tietokoneessa on yleensä aina sovellutusohjelma tai -ohjelmia. Tietokone on yleensä ostettu niiden takia, esim. siis tekstinkäsittelyyn.
Sovelluksia joille on olemassa ohjelmistonsa
- Tekstinkäsittely
- ConTEXT
- EditPad
- Emacs
- Microsoft Word
- OpenOffice.org Writer
- Julkaisu (Desktop publishing)
- Adobe FrameMaker
- Adobe PageMaker
- LaTeX
- Scribus
- Taulukkolaskenta
- Gnumeric
- Microsoft Excel
- OpenOffice.org Calc
- Tietokanta
- FileMaker
- Firebird
- InterBase
- Microsoft Access
- MySQL
- OpenOffice.org Base
- Oracle
- PostgreSQL
- SQLite
- Kuvankäsittely
- Adobe Photoshop -sarja
- GIMP
- Jasc Paint Shop Pro -sarja
- Inkscape
- IrfanView
- Videoeditointi
- Adobe Premiere
- Cinelerra
- iMovie
- Pinnacle Studio
- Windows Movie Maker
- Äänieditointi
- Audacity
- CoolEdit
- GoldWave
- Musiikinteko
- Buzz
- FastTracker
- FruityLoops
- ImpulseTracker
- SkaleTracker
- 3D-grafiikka
- 3D Studio Max -sarja
- Anim8or
- Blender3D
- Lightwave
- Maya
- Videontoisto
- Apple QuickTime
- BSPlayer
- MPlayer
- PowerDVD
- RealPlayer
- VLC media player
- Windows Media Player
- The Core Media Player
- Xine
- Äänentoisto
- Apple QuickTime
- FooBar2000
- BSPlayer
- RealPlayer
- Windows Media Player
- Winamp
- XMMS
- Tietoturva
- ZoneAlarm
- Norton Internet Security
- Tietoturva - Virustorjunta
- AntiVir
- Norton Antivirus
- McAfee VirusScan
- F-Prot
- Tietoturva - Palomuuri
- Kerio Personal Firewall
- ZoneAlarm
- Pakkausalgoritmit ja Pakkausohjelmat
- ARJ
- compress
- bzip
- Gzip
- IZArc
- Stuffit
- tar
- PowerArchiver
- Ultimatezip
- WinZip
- WinRAR
- WinAce
- Kopiointi
- Alcohol 120%
- CloneCD
- Sähköposti
- Elm
- Eudora
- Evolution
- Mozilla
- Mozilla Thunderbird
- Netscape
- Outlook Express
- Pine
- Kommunikointi
- AOL Instant Messenger
- Gaim
- ICQ
- Irssi
- ircII
- mIRC
- MSN Messenger
- Miranda IM
- Kopete
- Trillian
- Yahoo Messenger
- XiRCON
- Verkkosurffaus
- Internet Explorer
- Konqueror
- Links
- Lynx
- Mosaic
- Mozilla
- Mozilla Firefox
- Netscape
- Opera
- Safari
- Vertaisverkot
- BitTorrent
- EMule
- Direct Connect
- Shareaza
- Pelit
- Luettelo tietokone- ja videopeleistä
Luokka:Tietotekniikka
ja:プログラム
ko:프로그램
simple:Computer program
OhjelmointikieliOhjelmointikieli on keksitty kieli, jota käytetään tietokoneen ohjelmointiin. Ohjelmointikielille on normaalisti olemassa joko kääntäjä, joka muuntaa kirjoitetun ohjelman konekielelle tai muulle välikielelle, tai tulkki, joka on ohjelmointikieltä lähdekoodiläheisemmästä esitysmuodosta tulkitseva ohjelma. Nykyisin tulkin ja kääntäjän raja ei ole enää niin selkeä kuin esimerkiksi vielä 1980-luvulla.
Tietokonekielet ovat monin tavoin luonnollisten kielten kaltaisia. Niillä on oma sanastonsa ja kielioppisääntönsä; näistä kahdesta muodostuu kielen syntaksi eli lauseoppi. Niillä on myös looginen merkitys, jota kutsutaan semantiikaksi. Luonnollisia ja tietokonekieliä tutkiva lingvistiikka on hyvin samankaltaista. Itse asiassa luonnollisista kielistä on saatu paljon uutta tietoa tietokonekielten tutkimuksen avulla.
Yksinkertainen lause selventää syntaksin ja semantiikan eron. Lause "Koira söi luun" on sekä syntaktisesti (lauseopillisesti) oikein että semanttisesti (merkitykseltään) mielekäs. Sen sijaan lause "Luu söi koiran" on syntaktisesti oikein mutta semanttisesti epämielekäs.
Tietokonekielet on suunniteltu siten, että ihminen voi niillä ilmaista toiminnot, joita tietokoneen halutaan suorittavan, ja että ne ovat mukavia käyttää ja riittävän tarkkoja, jotta tietokone kykenee niitä noudattamaan yksiselitteisellä tavalla. Tyypillisesti tietokonekielten sanasto on hyvin yksinkertainen (alle sata sanaa) ja kielioppi rajoitettu (joka määrittelee kuinka sanoja voidaan laittaa yhteen).
Ohjelmointikielten jaottelu
Ohjelmointikielet jaetaan yleensä neljään ryhmään:
- proseduraalinen ohjelmointikieli
- oliopohjainen ohjelmointikieli
- funktionaalinen ohjelmointikieli
- logiikkapohjainen ohjelmointikieli
Ohjelmointikieliä
Linkkejä
- Sivustoja
- [http://www.mureakuha.com Mureakuha]
- [http://www.ohjelmointiputka.net Ohjelmointiputka]
- [http://www.2kmediat.com/artikkelit/ 2kmediat.com]
- Historiaa
- [http://www.levenez.com/lang/ Aikajana muutamista ohjelmointikielistä]
Luokka:Ohjelmointi
ja:PuRoGuRaMiN6Gu - -
Al-KhwarizmiAbu Abdullah Muhammad bin Musa al-Khwarizmi (n. 800-840) oli arabiaksi kirjoittanut persialainen matemaatikko ja tähtitietelijä. Hänen vuonna 825 kirjoittamansa vain latinankielisenä käännöksenä säilynyt Algoritmi de numero Indorum toi Eurooppaan mm. algoritmin, algebran ja algorismin käsitteet sekä intialaisarabialaisen lukujärjestelmän.
Sanat algoritmi ja algorismi tulevat suoraan al-Khwarizmin nimestä. Algebra-sanan alkuperä on sen sijaan arabian kielen sana al-jabr.
Luokka:Persialaiset matemaatikot
ms:Abu Abdullah Mohammad Ibn Musa al-Khawarizmi
ko:알 콰리즈미
ja:フワーリズミー
simple:Al-Khwarizmi
th:อัลคอวาริซมีย์
HakualgoritmiHakualgoritmit ovat keskeisiä ohjelmistoja suunniteltaessa ja niitä on hyvinkin monenlaisia riippuen käytettävistä tietorakenteista.
Ohessa joukko muutamia yleisiä algoritmeja
- Lineaarihaku
- Puolitushaku, myös binäärihakuna tunnettu
- Interpolaatiohaku
- BFS ja DFS, lyhimmän polun löytäminen. Ks. myös graafit
Luokka:Algoritmit
ja:検索
LajittelualgoritmiLajittelualgoritmit eli järjestämisalgoritmit ovat varsin keskeisiä algoritmeja ohjelmistotekniikassa. Niitä on useita erilaisia eri käyttötarkoituksia varten.
- Kantalukulajittelu (Radix sort)
- Kekolajittelu (Heap sort)
- Kuplalajittelu (Bubble sort)
- Laskentalajittelu (Counting sort)
- Lisäyslajittelu (Insertion sort)
- Lomituslajittelu (Merge sort)
- Nippulajittelu (Bucket sort)
- Pikalajittelu (QuickSort)
- Shell-lajittelu (Shell sort)
- Valintalajittelu (Selection sort)
- Helmilajittelu (teoreettinen) (Bead sort)
Lajittelualgoritmit voidaan luokitella sen mukaan, toimiiko lajittelualgoritmi paikallaan ja onko se vakaa:
- Vakaa lajittelualgoritmi ei vaihda keskenään samansuuruisen alkion suhteellista järjestystä, kun taas epävakaa saattaa niin tehdä.
- Paikallaan toimiva lajittelualgoritmi ei tarvitse toimiakseen kuin kiinteän määrän lisää muistitilaa lajiteltavalle tietorakenteelle, eli sen tilavaatimus on O(1)(1. Tämä on tärkeää jos muistitila on rajattu.
Voidaan todistaa, että suuruusarvojen vertailuun perustuvan lajittelualgoritmin asymptoottinen suoritusaika on aina vähintään kertaluokkaa O(n log n), jossa n on lajiteltavien alkioiden lukumäärä. (Kuitenkaan esim. Counting sort ei toimi vertailulla.)
Esimerkiksi lomituslajittelu on vakaa, mutta ei toimi paikallaan vaan vaatii alkioille O(n) lisämuistia. Sen suoritusnopeus on kuitenkin aina O(n lg n). Sen sijaan Insertion sort on vakaa ja toimii paikallaan, mutta sen suoritusnopeus on pahimmillaan kertaluokkaa O(n2).
Yleinen pikalajittelu vaatii keskimäärin O(n log(n)) vertailua, mutta pahimmassa tapauksessa O(n2), jos järjestettävät alkiot ovat jo valmiiksi järjestyksessä. Pikalajittelu on kevyt ja nopea lähes kaikilla suorittimilla, joka tekee siitä nopeamman kuin muut O(n log(n))-algoritmit. Pikalajittelun tilavaatimus on O(log n) keskimäärin ja O(n) pahimmassa tapauksessa. Pikalajittelun pahimman tilanteen välttämiseksi voidaan siihen liittää algoritmi, joka ennen järjestämistä sekoittaa järjestettävät alkiot epäjärjestykseen.
----
#Kertaluokkamerkintä O(n) selitetään artikkelissa asymptoottinen suoritusaika.
Luokka:Algoritmit
ko:정렬 알고리즘
ja:ソート
th:อัลกอริทึมการเรียง
TiivistealgoritmiTiiviste (hash) on tietotekniikassa termi, joka tarkoittaa tiedon tiivistämistä pienempään tilaan sitä varten, että alkuperäistä tietoa voidaan vertailla vertailemalla niiden tiivisteitä. Tiivisteestä ei voi palauttaa alkuperäistä tietoa kuten pakkaamisessa. Tiivistämiselle on useita erilaisia käyttötarkoituksia: tiivistetaulusta tiedot voidaan löytää nopeasti ja digitaalinen allekirjoitus perustuu kryptograafiseen tiivisteeseen.
Katso myös: hajautettu tiiviste, kryptografia
luokka:tietotekniikka
MerkkijonohakualgoritmiMerkkijonohakualgoritmit ovat algoritmeja, jotka etsivät lyhyen merkkijonon (hahmon) esiintymän pitkän merkkijonon (tekstin) seasta. Esimerkiksi hahmolla "land" on tekstissä "vårt land, vårt land, vårt fosterland" kolme esiintymää. Esiintymät voivat olla osittain päällekkäisiä.
Edellä esitellyn tarkan merkkijonohaun lisäksi voidaan tehdä myös likimääräistä merkkijonohakua, joka sallii tietyn määrän virheitä (esimerkkeinä hahmon "land" esiintymistä yhdellä virheellä ovat "ladd", "iand" ja "lgnd").
Merkkijonohakualgoritmeja
- Triviaalialgoritmi
- Knuth-Morris-Pratt
- Boyer-Moore
- Rabin-Karp
- Shift-Or
- BNDM
Luokka:algoritmit
KoodekkiKoodekki on algoritmi tai tietokoneohjelma, joka pakkaa ja purkaa ääni- tai kuvasignaalia, tai muuten muuntaa datavuota tai signaalia. Koodekki koodaa tai kompressoi signaalin, jolloin signaali käyttää vähemmän siirto- tai tallennuskapasiteettia, ja toisaalla purkaa koodauksen eli dekoodaa tai dekompressoi, jolloin signaali palautetaan alkuperäiseen muotoonsa tai riittävän lähelle sitä.
Sanana koodekki on käännöslaina englannin termistä codec (coding/decoding), koodain/dekoodain. Toisinaan käytetään myös suoraan sanasta codec muodostettua muotoa kodekki. Suomenkielinen Microsoft Windows kääntää termin codec pakkauksenhallinta.
Koodekkeja käytetään äänen ja videokuvan siirrossa sekä niiden tallentamiseen puhelimissa, televisiossa ja tietokoneissa. Koodekki voi toimia analogisesti tai digitaalisti. Digitaalisen äänen ja kuvan siirtoon ja tallennukseen on kehitetty lukuisia eri koodekkeja eri sovelluksiin. Yleensä koodekit erotellaan käyttötarkoituksen mukaan: on puhekoodekkeja, äänikodekkeja ja videokoodekkeja. Nimensä mukaan puhekoodekit soveltuvat käytännössä vain puheen käsittelyyn: niillä pakattuna musiikki vääristyy tunnistamattomaksi. Yksittäisiä kuvia kompressoitaessa ei puhutaan yleensä koodekeista vaan pakkauksesta ja pakkausalgoritmeista.
Koodekkien tehokkuutta voidaan mitata niin signaalin laadulla kuin tarvittavan siirtokapasiteetin määrälläkiin. Jotkut koodekit ovat häviöttömiä, mikä tarkoittaa sitä, että palautettu signaali on täysin samanlainen kuin alkuperäinen. Siirrettävän tiedon määrää voidaan kuitenkin vähentää huomattavasti enemmän, jos alkuperäisestä signaalista voidaan poiketa.
Tavallisen puhelimen ääni vie kompressoimattomana 96 kilobittiä sekunnissa; 3G-matkapuhelinverkon koodekki käyttää alle 5 kilobittiä sekunnissa ja puheesta saa vielä selvän. Vastaavasti CD-levylle tallennettu musiikki vie noin 1400 kilobittiä sekunnissa; MP3-koodekilla lähes alkuperäiseltä kuulostava musiikki vie 128 kb/s. Tavallinen TV-tasoinen pakkaamaton videokuva vie yli 100 megabittiä sekunnissa; DVD-levyillä käytettävällä MPEG2-koodekilla kuvanlaatu on vielä kohtuullinen 7 Mb/s nopeudella. Videoneuvotteluissa käytettävä H.263-koodekki tarjoaa kohtuullisen kuvan jo 32 kb/s nopeudella.
Koodekkia ei tule sekoittaa tiedostomuotoon. Saman koodekin tuottamaa tietoa voidaan tallentaa erityyppisiin tiedostoihin. Vaikka MP3-pakattu äänisignaali tallennetaan usein .mp3-päätteiseen tiedostoon, voidaan tämän muotoista ääntä käyttää myös esim. AVI-videotiedostoissa. Useista suosituista standardeista on tehty monia toteutuksia, esim. MPEG-4-standardia käyttävä koodekki on saatavilla Applelta, Microsoftilta, DivXNetworksilta ja XviD-projektilta.
Joitakin tunnettuja koodekkeja:
- Puhe
- G.711 eli PCM, 64 kb/s, käytetään digitaalisessa puhelinverkossa)
- GSM 06.10, 13 kb/s GSM-verkon alkuperäinen puhekoodekki
- G.723.1, 5,3/6,3 kb/s puhekoodekki videopuhelinsovelluksia varten
- G.729, 8,0 kb/s puhekoodekki Frame Relay-verkkoon
- iLBC, 13,3/15,2 k/s puhekoodekki IP-verkkoja varten
- AMR 4,75–12,2 kb/s UMTS puhekoodekki
- G.722.2 eli AMR-WB 6,6–23,9 kb/s kolmannen sukupolven matkapuhelinverkon laajakaistapuhekoodekki
- Ääni
- FLAC (Free Lossless Audio Codec, häviötön)
- Monkey's Audio (häviötön)
- Musepack (häviöllinen, MPEG2-pohjainen)
- Windows Media Audio 9 (häviöllinen)
- MP3 (MPEG 1 taso 3)
- AAC (MPEG 4, tiedostopääte .m4a)
- DTS
- AC-3 eli Dolby Digital
- Vorbis
- Video
- H.261
- MPEG-1
- MPEG-2
- H.263
- MPEG-4
- DivX
- XviD
- H.264
- 3GPP
- Windows Media Video 9 (WMV)
- MJPEG (Motion JPEG)
Luokka:Koodausmenetelmät
Luokka:Multimedia
ja:コーデック
Eukleideen algoritmiEukleideen algoritmin avulla löydetään kahden kokonaisluvun suurin yhteinen tekijä (s.y.t.). Algoritmi perustuu ns. jakoyhtälön perättäiseen käyttöön.
Esimerkkejä
Etsitään lukujen 31 ja 56 suurin yhteinen tekijä.
Ensin jaetaan 56 31:llä: 56 = 1 - 31 + 25. r0 = 25.
Sitten 31 25:llä: 31 = 1 - 25 + 6. r1 = 6.
Sitten 25 6:lla: 25 = 4 - 6 + 1. r2 = 1.
Sitten 6 1:llä: 6 = 6 - 1 + 0. r3 = 0.
Viimeinen nollasta eroava ri=1 on lukujen 31 ja 56 suurin yhteinen tekijä eli syt(31,56)=(31,56)=1. Tämä nähdään myös lukujen alkutekijähajotelmien avulla selvästi: 31 on alkuluku ja 56 = 23 - 7, joten suurin yhteinen tekijä on 1.
Kiinalaiset suorittivat saman algoritmin helmitaulussa seuraavasti:
Vähennä toistuvasti pienempää suuremmasta. Kun luvut ovat samat, algoritmi päättyy ja ko. luku on suurin yhteinen tekijä.
31 31 6 6 6 6 6 5 4 3 2 1
56 25 25 19 13 7 1 1 1 1 1 1
Etsitään syt(15,25).
25 = 1 - 15 + 10.
15 = 1 - 10 + 5.
10 = 2 - 5 + 0.
eli syt(15,25) = 5.
Kiinalaisittain:
25 10 10 5
15 15 5 5
Algoritmi
Olkoot luvut a ja b kokonaislukuja ja b erisuuri kuin nolla. Käyttämällä toistuvasti jakoyhtälöä, saadaan:
:
:
:
:
:
:
...
:
:.
Algoritmi päättyy, koska luvut r0, r1, ...,rn muodostavat aidosti vähenevän jonon positiivisia kokonaislukuja.
Viimeinen jakojäännös rn jakaa (tasan) luvut a ja b:
Alimmasta yhtälöstä rn jakaa luvun rn-1.
Koska , niin rn jakaa luvun rn-2
Näin jatkamalla saadaan lopulta, että rn jakaa b:n ja a:n.
Jos luvuilla a ja b on yhteinen tekijä c, ts. sanoen a ja b ovat tasan jaollisia luvulla c, c jakaa luvun r0, r1, ... yllä olevien yhtälöiden nojalla. Näin siis c jakaa luvun rn, joka on siten yhteisistä tekijöistä suurin.
Luokka:Matematiikka
luokka:algoritmit
ko:유클리드 호제법
ja:ユークリッドの互除法
TiedonpakkausTietojenkäsittelytieteessä tiedon pakkaamisella tai tiivistämisellä tarkoitataan käytäntöä, jossa tietoaines kuvataan vähemmällä tietomäärällä käyttäen sovittua merkitsemiskäytäntöä. Esimerkiksi lause "Ulla leipoi pullan" voidaan kuvata tiiviimmässä muodossa, jos sovitaan vaikkapa, että merkkijono ulla korvataan merkillä G, joka ei ennalta esiinny tekstissä.
Eräs tietokoneenkäyttäjille tuttu pakkausmenetelmä on ZIP. Se toteuttaa pakkaamisen lisäksi myös useiden tiedostojen arkistoinnin yhteen tiedostoon.
Kuten muunkin viestinnnän yhteydessä, tiedon välittäminen pakattuna vaatii tuen sekä lähettäjältä että vastaanottajalta. Kirjoitetunkin tekstin osalta pitää ymmärtää tekstissä käytetty kieli, jotta tekstiä voisi lukea. Sama pätee myös tiedonpakkaukseen, eli molempien osapuolien pitää hallita käytetty pakkausmenetelmä. Vastaanottajan pitää myös tietää, millä pakkausmenetelmällä tieto on tiivistetty niiden kaikkien menetelmien joukosta, jotka on vastaanottajan hallussa. Tämän selvittämiseen tiedostonnimien perässä on usein maininta käytetystä pakkaus- tai arkistointimenetelmästä, esimerkiksi .zip tai .gz.
Tietoaineksen tiivistäminen on mahdollista, koska lähes kaikki tallennettava informaatio on tilastollisesti redudanttia eli se sisältää vähemmän todellista informaatiota kuin sen kuvaamiseen on käytetty. Useimmissa merkistöissä, kuten ASCIIssa, jokainen kirjain kuvataan samalla bittimäärällä. Toisaalta kirjainten esiintymistiheydet eroavat suurestikin, esimerkiksi suomen kielessä kirjain 'k' on huomattavasti yleisempi kuin kirjain 'g'. Voidaan myös huomata, että on todennäköisempää, että vokaalia seuraa konsonantti kuin toinen vokaali. Kun nämä havainnot tehdään tilastollisin menetelmin tiivistettäväksi tarkoitetusta datasta, saadaan täsmällistä tietoa, jota varsinainen pakkausalgoritmi hyödyntää.
Lisätehoa pakkaukseen voidaan saavuttaa, jos ollaan valmiita luopumaan osasta tietosisältöä. Esimerkiksi television katselija ei todennäköisesti havaitse, jos taustalta poistetaan joitakin yksityiskohtia samalla kun hänen katseensa kohdistuu etualalla keskusteleviin päähenkilöihin. Myöskään ihmisen kuulo ei ole täydellinen; monet erilaiset ääninäytteet voivat kuulostaa samalta, vaikka ovatkin hyvin erilaisia tietokoneanalyysin mukaan. Kun löydetään sellaiset korvaavat palaset, jotka voidaan kuvata vähemmällä tietomäärällä kuin toiset ja ne kuitenkin havainnoitsijasta tuntuvat samalta kuin alkuperäiset, voidaan saavuttaa pienempiä tiedostokokoja. Häviölliset pakkausmetelmät perustuvat tähän.
Tiedon tiivistäminen on tärkeää, koska se vähentää kalliin tallennus- ja tiedonsiirtokapasiteetin käyttöä. Kuitenkin tiedon tiivistys vaatii laskentatehoa ja sitä kautta myös energiaa. Tehokkaat laitteet voivat olla kalliita ja energia vaikeasti saatavilla. Siksi pakkausmenetelmien soveltaminen käytäntöön vaatii monien asioiden huomioimista, etenkin jos kyseessä on häviöllinen menetelmä.
Häviötön pakkausmenetelmä tarkoittaa, että todellista tietoainesta ei häviä vaan se kuvataan toisella tavalla. Kun pakkaus puretaan, saadaan alkuperäinen tietoaines. Häviöllisessä pakkausmenetelmässä sen sijaan tietoa tarkoituksellisesti hävitetään pyrkien mahdollisimman pieneen muutokseen ihmisen saaman kokemuksen kannalta. Pakattaessa siten, että suurin osa ihmisistä ei vielä eroa havaitse, häviölliset menetelmät kykenevät yleisesti huomattavasti parempiin pakkaussuhteisiin kuin häviöttömät menetelmät.
Sovellukset
Eräs yksinkertaisimmista pakkausmenetelmistä on juovakoodaus (RLE). Se perustuu ajatuksen, että usein tiedostoissa esiintyy samaa arvoa peräkkäisissä kohdissa. Etenkin piirrostyylisissä kuvissa esiintyy usein samaa väriarvoa rivin peräkkäisissä kuvapisteissä. Tällöin yksi samanvärinen juova, jossa muuten kuvattaisiin jokaisen pisteen väri erikseen, korvataan tiedolla käytetystä väristä ja juovan pituudesta. Tämä on malliesimerkki kuvien häviöttömästä pakkauksesta. Häviöttömyys on tärkeää täsmällisen tiedon, kuten tekstin, tietokoneohjelmien ja mittaustuloksien säilyttämisessä, koska pienikin sisällön muutos voi aiheuttaa virheellistä tulkintaa.
Ihmisen havaintoon perustuvan tiedon, kuten kuvan ja äänen, säilyttämisessä ja välittämisessä voidaan sallia tietosisällön karsintaa, kunhan muutokset eivät häiritse ymmärtämistä tai niitä ei koeta epämiellyttäviksi. Usein ihmiset kokevat häviöllisen pakkauksen miellyttävämmäksi vaihtoehdoksi kuin suuremman levytilan tai kaistanleveyden käytön. Tietyissä tapauksissa, kuten GSM-puhelimessa, äänen pakkaus mahdollistaa pienempien tiedonsiirtomäärien ansiosta matalammat lähetystehot ja useampien puhelimien yhtäaikaisen käytön samalla taajuuskaistalla.
Häviöllistä pakkausmenetelmää ja sen asetuksia valittaessa on otettava huomioon ainakin suorituskyvyn tarve, tiivistyneen tiedon määrä ja häviöllisyyden tuntuma.
Häviöllisiä kuvanpakkausformaatteja käytetään mm. digitaalikameroissa, joissa se mahdollistaa huomattavasti pienempikokoiset kuvatiedostot hyvin vähäisellä laadun putoamisella. DVD-levyissä käytetään häviöllistä MPEG-2-pakkausmenetelmää videon ja äänen pakkaamiseen.
Häviöllisessä äänenpakkauksessa käytetään hyväksi psykoakustiikkaa, jonka avulla pystytään äänestä poistamaan osia, jotka ovat vaikeasti tai eivät lainkaan kuultavissa. Ihmisäänen pakkaamiseen sovelletaan vielä tästäkin erikoistuneempia menetelmiä ja siksi puheen pakkaamista ei yleensä pidetä äänenpakkausmenetelmänä. Puheenpakkausmenetelmiä käytetään etenkin Internet-puheluissa kun puolestaan äänenpakkausmenetelmiä käytetään esimerkiksi arkistoitaessa CD-levyn sisältö kovalevylle Ogg Vorbis-muodossa. Useita eri äänenpakkausmenetelmiä on lueteltu alla.
Teoria
Informaatioteoria, algoritmiikka ja hävikkiteoria (rate distortion theory) muodostavat tiedontiivistämisen teoreettisen pohjan. Tälle pohjan loi Claude Shannon julkaistessaan alan ensimmäiset teokset 1940- ja 1950-lukujen taitteessa. Doyle ja Carlson vuonna 2000 kirjoittivat tiedonpakkauksesta yhtenä yksinkertaisimmista ja hienostuneimmista tieteenaloista. Kryptografia ja Koodausteoria liittyvät myös läheisesti pakkausmenetelmiin. Tiedon tiivistämisen ajatus liittyy myös tilastolliseen päättelyyn ja Suurimman uskottavuuden estimointiin (MLE).
Monet häviöttömät pakkausmenetelmät voidaan kuvata nelivaiheisena mallina. Häviöllisissä menetelmissä on useimmiten vielä useampia vaiheita, kuten ennustaminen, taajuusmuunnos ja kvantisointi.
Lempel-Ziv (LZ) -pakkausmenetelmä on suosituin häviötön pakkausmenetelmä. Deflate-algoritmi on LZ:n muunnos, joka on optimoitu nopeaa pakkauksen purkamista ja parempaa tiivistyssuhdetta silmälläpitäen. Tosin pakkausajat voivat olla Deflatella LZ-menetelmää pitemmät. Deflatea käytetään esimerkiksi PKZIP:ssä, gzipissä ja PNG-kuvaformaatissa. Lempel-Ziv-Welch-menetelmä (LZW) on ollut [Unisys]in patentoima useissa länsimaissa kesäkuuhun 2003 saakka ja sitä on käytetty GIF-kuvien pakkaamisessa. Unisysin patentti ei ollut koskaan voimassa Suomessa. Mainitsemisen arvoinen on myös LZR-menetelmä (LZ-Renau), joka on Zip-menetelmän taustalla. Lempel-Ziv-menetelmät taulukoivat usein toistuvaa dataa, joka useimmissa menetelmissä kerätään aiemmasta datasta. Taulukko itsessään on usein Huffman-koodattu (esimerkiksi SHRI ja LZX). LZX on käytössä ainakin Microsoftin Cabinet-pakkausmuodossa.
Katso myös
Tiedon pakkaaminen
- videonpakkaus
- äänenpakkaus
- kuvanpakkaus
- puheen pakkaaminen
Pakkausmenetelmiä
- Juovakoodaus (RLE) – käytössä mm. PCX-kuvissa
- Sanakirjamenetelmät
- Deflate – yhdistelmä Huffmanin koodausta ja LZ77:tä) – Käytössä ZIP:ssä, gzipissä and PNG-kuvissa
- LZW – käytössä Unixin vanhassa compress-työkalussa (tiedostopääte .Z ) sekä GIF-kuvissa
- LZO – Pakkausmenetelmä, joka on nopea ja tarvitsee hyvin vähän muistia
- Burrows-Wheeler-muunnos
- bzip2 – yhdistelmä Burrows-Wheeleriä ja Huffman-koodausta
- Ennustava pakkaus
- Entropiakoodaus
- Huffmanin koodaus – yksinkertainen, käytetään usein pakkauksen viimeisenä vaiheena
- Aritmeettinen koodaus – monimutkaisempi
- Lineaarinen ennustava koodaus
- TTA – käytetään häviöttömässä äänepakkauksessa
- FLAC – käytetään häviöttömässä äänenpakkauksessa
- diskreetti kosinimuunnos (DCT)
- JPEG – kuvanpakkausmuoto, joka käyttää diskreetin kosinimuunnoksen lisäksi kvantisointia ja lopuksi Huffmanin koodausta
- MPEG – äänen ja videon pakkausmuoto, joka on hyvin laajassa käytössä. Soveltaa diskreetin kosinimuunnoksen lisäksi liikkeen ennustusta videonpakkauksen yhteydessä
- MP3 – osana MPEG-1-standardia äänen ja musiikin pakkaamista varten. Käyttää kaistaerottelua ja MDCT:tä, havaintomallinnusta, kvantisointia, and Huffmanin koodausta
- AAC – osana MPEG-2:n ja MPEG-4:n äänenpakkauksen määritystä, käyttää MDCT:tä, havaintomallinnusta, kvantisointia, and Huffmanin koodausta
- Ogg Vorbis – AAC:n kaltainen pakkausmuoto, ei käytä patentoituja menetelmiä
- Wavelet-pakkaus
- JPEG 2000 – waveletteihin, kvantisointiin, ja entropiakoodaukseen perustuva menetelmä
Lähteet
- [http://en.wikipedia.org/wiki/Data_compression Englanninkielinen Wikipedia]
- [http://www.rni.helsinki.fi/~pek/sanasto/tilastosanasto.html Tilastotieteen ja todennäköisyyslaskennan sanasto]
Linkit (engl.)
- [http://www.fileinfo.net/filetypes.php?format=compressed Tiedostopäätteitä]
- [http://www.maximumcompression.com/ Pakkausmenetelmien suorituskykytestejä ja vertailuita]
- [http://computer.howstuffworks.com/file-compression.htm/printable Kuinka tiedonpakkaus toimii]
- [http://studwww.ugent.be/~jdebock/last_updates.htm Esittelee komentorivipohjaisia pakkausohjelmia]
Luokka:koodausmenetelmät
ko:데이터 압축
ja:データ圧縮
simple:Data compression
th:การบีบอัดข้อมูล
ÄänenpakkausÄänenpakkaamisen tavoitteena on pakata digitaalinen äänisignaali käyttötarkoitukseen sopivaan pienimpään mahdolliseen tilaan mahdollisimman yksinkertaisella pakkaustavalla.
Tähän tavoitteeseen pyritään poistamalla äänisignaalista tarpeeton ja toistuva data sekä pakkaamalla signaali perinteisillä häviöttömillä datanpakkausmenetelmillä, esim. Huffman-koodauksella.
Käyttökohteesta ja tarpeesta riippuen ääntä voidaan pakata joko häviöttömästi tai häviöllisesti. Häviöttömässä pakkauksessa äänisignaalin laatu ei muutu alkuperäiseen signaaliin nähden ollenkaan. Tällöin myös signaalin pakkaussuhde jää hyvin heikoksi. Häviöllisessä pakkauksessa äänisignaalista poistetaan peruuttamattomasti dataa, jota siihen ei pystytä enää millään tavoin palauttamaan. Tällä tavoin saadaan parannettua pakkaussuhdetta huomattavasti, mutta pakatun signaalin laatu heikkenee.
Äänen pakkauksesta puhuttaessa on hyvä erotella äänen pakkaus audion ja puheen pakkaamiseen. Audion pakkaamiselta vaaditaan yleensä parempaa laatua siitä nauttimiseen kuin puheelta, jonka tarvitsee yleensä olla vain ymmärrettävää.
Häviöllisissä audion pakkausmenetelmissä käytetään yleensä hyväksi ihmisen kuuloaistiin liittyviä ominaisuuksia (psykoakustiikka), jota mallintamalla voidaan selvittää mitkä osat pakattavasta audiosignaalista aistitaan selkeimmin. Tällöin on helpompaa poistaa ne audiosignaalin osat, joita ihmiskorva ei kykene erottamaan, mikä mahdollistaa audiosignaalin kuuloaistimuksen säilymisen kuulijalle miltei muuttumattomana. Kuitenkin samalla pystytään pienentämään audiosignaalin tiedostokokoa ja saavuttamaan tehokkaampi pakkaussuhde. Tällaista äänen pakkausmetodia kutsutaan havaintopohjaiseksi audiokoodaamiseksi (engl. perceptual audio encoding).
Pakkauskoodekkeja
Muutamia yleisiä häviöllisiä audion pakkauskoodekkeja:
- Ogg Vorbis
- MPEG-1 Audio Layer 3 (MP3)
- MPEG-1 Audio Layer 2 (MP2)
- RealAudio
- WMA
- AAC
Katso myös
- Puheen pakkaaminen
luokka:koodausmenetelmät
Puheen pakkaaminenPuheen pakkaaminen eli puheen koodaus on menetelmä, jolla puhetta pyritään siirtämään tai tallentamaan käyttäen mahdollisimman vähän siirto- tai tallennuskapasiteettiä.
Menetelmä tai laite, jolla puhe pakataan tai koodataan ja pakkaus puretaan, on nimeltään puhekoodekki. Kehittyneissä puheen pakkaamismenetelmissä mallinnetaan ihmisen äänijänteitä sekä muita puheenmuodostuksen mekanismejä.
Puheenkoodausmenetelmiltä vaaditaanmuutamia keskeisiä ominaisuuksia.
Pakatun puheen tulisi olla:
- ymmärrettävää
- tunnistettavaa
- luonnollista
Puhekoodekin toteutuksen tulisi tekniikaltaan olla myös:
- yksinkertainen
- vaatia vähän resursseja (prosessointiteho, kaistavaatimus jne.)
- virheensietokykyinen
- nopea
Puhekoodekit perustuvat joko äänen aaltomuodon käsittelyyn tai puheen mallintamiseen (engl. source codec) tai näiden molempien yhdistelmään.
Aaltomuotokoodekit
Aaltomuotokoodekkeihin kuuluu mm. PCM (Pulse Code Modulation)-koodaus, jota käytetään puheen välittämisessä digitaalisessa puhelinverkossa. ITU:n G.711-standardi määrittelee kaksi erilaista logaritmista koodausta digitaalisille signaaleille, pulsseille, A-lain ja µ-lain. G.711 käyttää joko käyttää 64 kb/s tai 56 kb/s. Aaltomuotokoodekit pyrkivät mallintamaan alkuperäistä äänisignaalia mahdollisimman tarkasti ottamatta kantaa sen sisältöön. Ne ovat myös hyvin yksinkertaisia. Toisaalta koska aaltomuotokoodekit vaativat paljon tietoliikennekaistaa, niille syötettävä äänisignaali täytyy ensin suodattaa sopivaksi: G.711-koodekit sopivat puhelinlaatuisen äänen eli taajuusalueen 300–3400 Hz välittämiseen vaatimattomalla dynamiikalla (niidem teoreettinen maksimi on 36 dB). ADPCM eli G.726 sovittaa dynaamisesti koodauksen käyttämän arvoalueen sopivaksi. G.726 tarvitsee puhelinlaatuisen äänen välittämiseen vain 32 kb/s.
Aaltomuotokoodekkeja:
- ITU G.711 (64 kb/s)
- ITU G.726 (32 kb/s
- ITU G.727 (16-40 kb/s)
Mallinnuskoodekit
Edellistä tehokkaampi tapa pakata puhetta on mallintaa äänilähde ja yrittää tuottaa alkuperäistä muistuttava ääni mallin käyttämien parametrien avulla. Koska äänen alkuperäistä aaltomuotoa ei tallenneta vaan ainoastaan sen tuottamiseen käytettävät parametrit, vaadittava tiedonsiirtokapasiteetti on erittäin pieni. Ymmärrettävää puhetta pystytään välittämään jo 2,4 kb/s kaistalla. Pakattu ääni kuulostaa kuitenkin metalliselta ja epäluonnolliselta.
Ensimmäinen tähän menetelmään perustunut puheenpakkausmenetelmä oli nimeltään Vocoder (engl. VOice CODER), jonka kehitti Homer Dudley AT&T:n Bell Labsissa 1930-luvulla. Vocoder oli analoginen, sen äänimallissa oli kymmenen eri taajuuksille viritettyä kaistanpäästösuodinta, herätteenä käytettiin pulssioskillaattoria tai kohinaa. Kaikkista pelkästään mallinnukseen perustuvista koodekeista voidaan joskus käyttää yleisnimitystä vocoder.
Puheenkoodauksessa 1970-luvulta alkaen käytetyt digitaalisen mallinnuksen menetelmät perustuvat kaistanpäästösuodattimien sijaan lineaariennusteeseen, ja niistä käytetään lyhennettä LPC (Linear Prediction Coding).
Tunnetuin nykyisin käytetyistä mallinuskoodeista on LPC-10.
Hybridikoodekit
Hybridikoodekit yhdistävät toisiinsa mallinnuksen ja aaltomuotokoodauksen ominaisuudet. Hybridikoodekit pyrkivät säilyttämään alkuperäisen signaalin ymmärtämiselle tärkeät osat (esim. formantit) muuttumattomina mutta syntetisoimaan loput. Tunnetuin hybridikoodeissa käytettävistä algoritmeista on nimeltään CELP (Codebook Excited Linear Prediction). Sillä pystytään tuottamaan ymmärrettävää puhetta alle 5 kb/s kaistalla.
CELP perustuu AbS-malliin (Analysis by Synthesis): eri parametrien tuottamaa ääntä verrataan pakattavaan ääneen ja pyritään löytämään niille arvot, jotka tuottavat pienimmän keskineliövirheen. Kaikkien mahdollisten parametrien kokeilu vaatii kuitenkin liikaa resursseja, joten CELP:tä on kehitetty lukuisia eri variantteja. Tärkein näistä CELP:n variantti on nimeltään Algebraic CELP eli ACELP.
Hybridikoodekkeja:
luokka:koodausmenetelmät
Luokka:TietotekniikkaTietotekniikkaan liittyviä artikkeleita.
Luokka:Tekniikka
Luokka:OhjelmistotiedeArtikkeleita ohjelmistotieteestä
luokka:Tietojenkäsittelytiede
luokka:Tietotekniikka SektSekt is the German term for sparkling wine. It may be made by the same method as Champagne or by the tank method.
Historically much sekt was made at least partially from imported grapes; it can only be labelled as Deutscher Sekt if it is made exclusively from German grapes.
Some very good examples are made, often using the riesling grape, but much of it is cheap and drunk locally rather than exported.
Category:German wines
SYLWESTER Gry Playstation wadysawowo pokoje liczniki webmaster
|