Prijeđi na sadržaj

N-torka

Izvor: Wikipedija

Umatematici,n-torka(engl.tuple) jekonačanniz(također poznat kao "uređena lista" ) odnobjekata, svaki od kojih je specificiranog tipa. Primjerice, "četvorka" s komponentama OSOBA, DAN, MJESEC i GODINA se može rabiti za bilježenje zapisa da je određena osoba rođena određenog dana određenog mjeseca određene godine.

N-torke se rabe za opis matematičkih objekata koji se sastoje od specificiranih dijelova. Primjerice,usmjereni grafje definiran kao n-torka (V,E) pri čemu jeVskup vrhova (čvorova) iEpodskup odV×Vkoji označuje bridove. Tip prvog objekta jest "skup vrhova" dok je tip drugog "skup bridova".

Imena n-torki

[uredi|uredi kôd]

Naziv "torka" se u hrvatskom jeziku ne rabi, već gotovo isključivo "n-torka" označujući duljinu od n elemenata. 2-torka se zovedvojkailipar,3-torka jetrojkai tako dalje.Nmože biti bilo koji nenegativni cijeli broj. Primjerice,kompleksni brojmože biti predstavljen dvojkom, ikvaternionmože biti predstavljen četvorkom.

Formalne definicije

[uredi|uredi kôd]

Glavna svojstva koja razlikuju n-torku od, na primjer,skupa,su:

  1. n-torka može sadržavati objekt više nego jednom, i
  2. objekti se mogu pojavljivati u određenom redoslijedu.

Valja uočiti da (1) razlikuje n-torku oduređenog skupai da (2) razlikuje n-torku odmultiskupa.Ovo je često formalizirano dajući sljedeće pravilo za jednakost dvajun-torki:

(a1,a2,…,an) = (b1,b2,…,bn) ↔a1=b1,a2=b2,…,an=bn.

Budući da jen-torka indeksirana brojevima 1…n(ili 0…n-1), može se shvatiti kaofunkcijakoja preslikava iz podskupa od:

(a1,a2,…,an) ≡fa:ℕn→ A:iai.

Drugi je način formaliziranja n-torki preslikavanjem u primitivnije konstrukteteorije skupovakao što jeuređeni par.Primjerice,n-torka (sn> 2) se može definirati kaouređen parsvojeg prvog elementa i (n−1)-torke koja sadrži sve ostale:

(a1,a2,…,an) = (a1,(a2,…,an))

Rabeći uobičajenu definicijuuređenog parateorijom skupova i predstavljajući praznu n-torku (0-torku) praznim skupom, slijedi sljedeća induktivna definicija:

  1. 0-torka (tj. prazna n-torka) je predstavljena sa
  2. ako jexn-torka tada {{a}, {a,x}} je (n+ 1)-torka.

Rabeći ovu definiciju, (1,2,2) bi bilo

(1,(2,(2,))) = (1,(2, {{2}, {2,}} )) = (1, {{2}, {2, {{2}, {2,}}}} ) = {{1}, {1, {{2}, {2, {{2}, {2,}}}}}}

Ovdje postoji važna sličnost sLispomkoji je izvorno koristio apstrakciju uređenog para kako bi induktivno stvorio strukturen-torki i listi:

  1. istaknuti simbol NIL predstavlja praznu listu;
  2. ako jeXlista iAproizvoljna vrijednost, tada par (AX) predstavlja listu sglavom(tj. prvim elementom)Airepom(tj. ostatkom liste bez glave)X.

Uporaba u računarstvu

[uredi|uredi kôd]

Uračunarstvu,n-torkaima tri različita značenja. Tipično ufunkcijskimi nekim drugimprogramskim jezicima,n-torka je podatkovni objekt koji sadrži nekoliko drugih objekata, sličan matematičkoj n-torci. Takav objekt je također poznat kaozapis.[1]

Programski jezik Eiffel

[uredi|uredi kôd]

Programski jezik Eiffelima ugrađenu podršku za n-torke. Tip

TUPLE [X, Y, Z]

ima, kao svoje vrijednosti, n-torke od tri ili više elemenata, od kojih je prvi tipa X, drugi tipa Y i treći tipa Z. Ovo također može biti napisano rabeći oznake (tag):

TUPLE [oznaka1: X, oznaka2: Y, oznaka3: Z]

bez utjecaja na rezultirajući tip. Stvarna n-torka, koja odgovara ovom tipu, je zapisana rabeći uglate zagrade, primjerice

[x1, y1, z1]

pri čemu je x1 tipa X itd. Ako je t takva n-torka, njenim se elementima može pristupiti rabeći oznake, npr. t.oznaka1 itd.; kao i postaviti na isti način, npr. t.oznaka2:= y2 što zamjenjuje drugi element, tipa Y, vrijednošću y2. Vrijednosti tipa TUPLE [X, Y, Z] može biti dodijeljena varijabla istog tipa ali također i ona tipa TUPLE [X, Y] ili TUPLE [X], ili samo TUPLE što pokriva sve n-torke. Ovo se može ostvariti zahvaljujući definiciji da TUPLE [X, Y], primjerice, pokriva nizove odbarem(mjestotočno) dva elementa, za prva dva od dana tipa. Tipovi n-torki se dobro uklapaju u objektno orijentirani kontekst, gdje štede pisanje u klasu u slučaju gdje je sve što je potrebno jest jednostavni niz vrijednosti s pridruženim mehanizmima dohvata i postavljanja za svako polje.

Programski jezik C++

[uredi|uredi kôd]

U programskom jezikuC++ 11podržan jetuple.[2]

#include<tuple>
#include<iostream>
#include<string>

intmain()
{
// izradi novi 'tuple' s tri komponente (decimalni broj 3.8, znak A, niz znakova "Lisa Simpson" )
autostudent0=std::make_tuple(3.8,'A',"Lisa Simpson");
std::cout<<"ID: 0,"
// ispisi 0. clan student0
<<"GPA:"<<std::get<0>(student0)<<","
// ispisi 1. clan student0
<<"grade:"<<std::get<1>(student0)<<","
// ispisi 2. clan student0
<<"name:"<<std::get<2>(student0)<<'\n';

doublegpa1;
chargrade1;
std::stringname1;
// izradi 'tuple' s tri komponente (decimalni broj 2.9, znak C, niz znakova "Milhouse Van Houten" )
// zatim raspodijeli komponente po varijablama gpa1 (tipa decimalni broj), grade1 (tipa znak) te name1 (tipa niz znakova)
std::tie(gpa1,grade1,name1)=std::make_tuple(2.9,'C',"Milhouse Van Houten");
std::cout<<"ID: 1,"
// ispisi vrijednost varijable gpa1
<<"GPA:"<<gpa1<<","
// ispisi vrijednost varijable grade1
<<"grade:"<<grade1<<","
// ispisi vrijednost varijable name1
<<"name:"<<name1<<'\n';
}

Modeliranje informacija

[uredi|uredi kôd]

S inherentnim svojstvima para Ime/Vrijednost, skupa sa strukturiranom i uređenom naravi, naziv 'n-torka' se prirodno proširuje za porabu u modeliranju informacija i definiciji baza podataka.

Primjerice, XML n-torke predstavljaju strukture n-torki Ime/Vrijednost. Slijedi primjer XML n-torke:

<ime>Vrijednost</ime>

Imena polja

[uredi|uredi kôd]

U nekim jezicima, napose uteoriji baza podataka,n-torka je definirana kao konačna funkcija koja preslikava imena polja u određene vrijednosti. Svrha joj je ista kao u matematici, da indicira da se određeni entitet ili objekt sastoji od određenih dijelova i/ili ima određena svojstva, s tim da su ovdje ti dijelovi identificirani jedinstvenim imenom polja a ne pozicijom, što često vodi ka prijemčivijoj notaciji. Općenit naziv za ovakav konstrukt jestasocijativni niz- drugi programski jezici imaju druga imena za ovaj koncept.

Mali primjer n-torke bi bio:

( igrač: "Ivan", bodovi: 25 )

što predstavlja funkciju koja preslikava ime polja "igrač" u string "Ivan" i ime polja "bodovi" u broj 25. Valja uočiti da je redoslijed dijelova n-torke nebitan, te da stoga može biti napisana kao:

( bodovi: 25, igrač: "Ivan" )

U relacijskom su modelu takve n-torke obično korištene za predstavljanje jednog iskaza - u ovom slučaju postoji jedan igrač imena "Ivan" i bodova "25".

U programskim su jezicima n-torke korištene za oblikovanje podatkovnih struktura. Primjerice, sljedeće bi mogla biti struktura koja predstavlja čvor udvostruko vezanoj listi:

( vrijednost: 16, prethodni-čvor: 1174782, sljedeći-čvor: 1174791 )

Vanjske poveznice

[uredi|uredi kôd]