Idempotence - Idempotence
Idempotence ( UK : / ˌ ɪ d ɛ m p oʊ t ən s / , USA : / ˌ aɪ d ə m - / ) je vlastnost některých operací v matematiky a výpočetní techniky , přičemž mohou být použity vícekrát aniž by se změnil výsledek nad rámec původní aplikace. Pojem idempotence vzniká na řadě míst v abstraktní algebře (zejména v teorii projektorů auzavíracích operátorů ) a funkční programování (ve kterém je propojeno s vlastností referenční transparentnosti ).
Tento termín zavedl Benjamin Peirce v kontextu prvků algeber, které zůstávají invariantní, když se zvýší na kladnou celočíselnou moc, a doslova znamená „(kvalita mít) stejnou moc“, od idem + potence (stejná + síla).
Definice
Prvek x z množiny S opatřeném binární operátor • se říká, že idempotentních pod • pokud
- x • x = x .
O binární operaci • se říká, že je idempotentní, pokud
- ∀ x ∈ S , x • x = x .
Příklady
- V monoidu (ℕ, ×) přirozených čísel s násobením jsou pouze 0 a 1 idempotentní. Skutečně 0 × 0 = 0 a 1 × 1 = 1 , což neplatí pro jiná přirozená čísla.
- V magmatu ( M , •) je prvek identity e nebo absorpční prvek a , pokud existuje, idempotentní. Skutečně e • e = e a a • a = a .
- Ve skupině ( G , •) je prvek identity e jediným idempotentním prvkem. Ve skutečnosti, pokud x je prvkem G tak, že x • x = x , pak x • x = x • e a nakonec x = e tím, že násobí vlevo podle inverzní prvek z x .
- V monoidech (𝒫 ( E ), ∪) a (𝒫 ( E ), ∩) mocenské sady množiny E s nastaveným spojením ∪ a množinovým průsečíkem ∩ jsou ∪ a ∩ idempotentní. Skutečně ∀ x , x ∪ x = x a ∀ x , x ∩ x = x .
- V monoidech ({0, 1}, ∨) a ({0, 1}, ∧) booleovské domény s logickou disjunkcí ∨ a logickou spojkou ∧ jsou ∨ a ∧ idempotentní. Skutečně ∀ x , x ∨ x = x a ∀ x , x ∧ x = x .
- V booleovském kruhu je násobení idempotentní.
- V tropickém semiringu je sčítání idempotentní.
Idempotentní funkce
V monoidu ( E E , ∘) funkcí od množiny E k sobě s složením funkcí ∘ jsou idempotentními prvky funkce f : E → E takové, že f ∘ f = f , to je takové, že ∀ x , f ( f ( x )) = f ( x ) (obraz každého prvku v E je pevný bod z f ). Například:
- absolutní hodnota je idempotent. Skutečně, abs ∘ abs = abs , tj. ∀ x , abs (abs ( x )) = abs ( x ) ;
- konstantní funkce jsou idempotentní;
- funkce identity je idempotentní;
- funkce podlahy , stropu a dílčích částí jsou idempotentní;
- podskupina generované funkce z moci nastavit skupiny k sobě je idempotent;
- funkce konvexního trupu z mocenské sady afinního prostoru nad realitami k sobě je idempotentní;
- že při uzavírání a interiérové funkce elektrického souboru je topologický prostor k sobě, jsou idempotent;
- že Kleene hvězda a Kleene plus funkce elektrického souboru monoid na sobě jsou idempotent;
- se idempotentních endomorphisms příslušníky vektorového prostoru jsou jeho projekce .
V případě, že množina E má n prvků, můžeme rozdělit do k- vybrán pevných bodech, a n - k ne-pevné body v f , a pak se k n - k je počet různých idempotentních funkcí. S ohledem na všechny možné oddíly tedy
je celkový počet možných idempotentních funkcí v sadě. Číslo sekvence počtu idempotentních funkcí, jak je dána součtem výše pro n = 0, 1, 2, 3, 4, 5, 6, 7, 8, ... začíná s 1, 1, 3, 10, 41, 196 , 1057, 6322, 41393, ... (sekvence A000248 v OEIS ).
Ani vlastnost bytí idempotentní, ani to, že není, není zachována pod složením funkcí. Jako příklad pro první, f ( x ) = x mod 3 a g ( x ) = max ( x , 5) jsou obě idempotentní, ale f ∘ g není, i když g ∘ f se stane. Jako příklad posledně jmenované funkce negace ¬ na booleovské doméně není idempotentní, ale ¬ ∘ ¬ je. Podobně unární negace - () skutečných čísel není idempotentní, ale - () ∘ - () je.
Význam počítačové vědy
V informatice může mít termín idempotence jiný význam v závislosti na kontextu, ve kterém je aplikován:
- v imperativním programování je podprogram s vedlejšími efekty idempotentní, pokud více volání podprogramu má stejný účinek na stav systému jako jedno volání, jinými slovy pokud je funkce ze systémového stavového prostoru k sobě spojená s podprogramem idempotentní v matematický smysl uvedený v definici ;
- ve funkčním programování je čistá funkce idempotentní, pokud je idempotentní v matematickém smyslu uvedeném v definici .
Toto je velmi užitečná vlastnost v mnoha situacích, protože to znamená, že operaci lze opakovat nebo opakovat tak často, jak je to nutné, aniž by došlo k nechtěným efektům. U neidempotentních operací může být nutné, aby algoritmus sledoval, zda byla operace již provedena nebo ne.
Příklady informatiky
Funkce vyhledávající jméno a adresu zákazníka v databázi je obvykle idempotentní, protože to nezpůsobí změnu databáze. Podobně žádost o změnu adresy zákazníka na XYZ je obvykle idempotentní, protože konečná adresa bude stejná bez ohledu na to, kolikrát je žádost odeslána. Žádost zákazníka o zadání objednávky však obvykle není idempotentní, protože více požadavků povede k zadání více objednávek. Žádost o zrušení konkrétní objednávky je idempotentní, protože bez ohledu na počet žádostí je objednávka zrušena.
Sekvence idempotentních podprogramů, kde se alespoň jeden podprogram liší od ostatních, však nemusí být nutně idempotentní, pokud pozdější podprogram v sekvenci změní hodnotu, na které dřívější podprogram závisí - idempotence není uzavřena pod sekvenčním složením . Předpokládejme například, že počáteční hodnota proměnné je 3 a existuje podprogramová sekvence, která proměnnou přečte, poté ji změní na 5 a poté znovu načte. Každý krok v sekvenci je idempotentní: oba kroky čtení proměnné nemají žádné vedlejší účinky a krok změny proměnné na 5 bude mít vždy stejný účinek bez ohledu na to, kolikrát se provede. Nicméně provedení celé sekvence jednou vytvoří výstup (3, 5), ale jeho provedení podruhé vytvoří výstup (5, 5), takže sekvence není idempotentní.
int x = 3;
void read() { printf("%d\n", x); }
void change() { x = 5; }
void sequence() { read(); change(); read(); }
int main() {
sequence(); // prints "3\n5\n"
sequence(); // prints "5\n5\n"
return 0;
}
V protokolu HTTP ( Hypertext Transfer Protocol ) jsou idempotence a bezpečnost hlavními atributy, které oddělují metody HTTP . Z hlavních metod HTTP by GET, PUT a DELETE měly být implementovány idempotentním způsobem podle standardu, ale POST nemusí být. GET načte stav zdroje; PUT aktualizuje stav zdroje; a DELETE odstraní zdroj. Stejně jako ve výše uvedeném příkladu nemá čtení dat obvykle žádné vedlejší účinky, proto je idempotentní (ve skutečnosti nulové ). Aktualizace a odstraňování daných dat jsou obvykle idempotentní, pokud požadavek jednoznačně identifikuje zdroj a v budoucnu pouze tento zdroj. PUT a DELETE s jedinečnými identifikátory redukují na jednoduchý případ přiřazení proměnné buď hodnoty, nebo hodnoty null, respektive, a jsou idempotentní ze stejného důvodu; konečný výsledek je vždy stejný jako výsledek počátečního spuštění, i když se odpověď liší.
Porušení požadavku na jedinečnou identifikaci při ukládání nebo vymazání obvykle způsobí porušení idempotence. Například ukládání nebo mazání dané sady obsahu bez zadání jedinečného identifikátoru: POST požadavky, které nemusí být idempotentní, často neobsahují jedinečné identifikátory, takže vytvoření identifikátoru je delegováno na přijímací systém, který následně vytvoří odpovídající nový záznam. Podobně požadavky PUT a DELETE s nespecifickými kritérii mohou mít za následek různé výsledky v závislosti na stavu systému - například požadavek na odstranění nejnovějšího záznamu. V každém případě budou následná spuštění dále upravovat stav systému, takže nejsou idempotentní.
Při zpracování toku událostí označuje idempotence schopnost systému produkovat stejný výsledek, i když je stejný soubor, událost nebo zpráva přijata více než jednou.
V architektuře load -store jsou instrukce, které by mohly způsobit poruchu stránky, idempotentní. Pokud tedy dojde k chybě stránky, operační systém může načíst stránku z disku a poté jednoduše znovu spustit chybnou instrukci. V procesoru, kde takové pokyny nejsou idempotentní, je řešení chyb stránek mnohem složitější.
Při přeformátování výstupu se očekává , že pěkný tisk bude idempotentní. Jinými slovy, pokud je výstup již „hezký“, pro hezkou tiskárnu by nemělo být co dělat.
V architektuře orientované na služby (SOA) lze vícestupňový orchestrační proces složený výhradně z idempotentních kroků přehrát bez vedlejších efektů, pokud některá část tohoto procesu selže.
Mnoho operací, které jsou idempotentní, často má způsoby, jak „obnovit“ proces, pokud je přerušen - způsoby, které končí mnohem rychleji, než začít úplně od začátku. Například obnovení přenosu souborů , synchronizace souborů , vytvoření sestavení softwaru , instalace aplikace a všech jejích závislostí pomocí správce balíčků atd.
Aplikované příklady
Aplikované příklady, se kterými se mnoho lidí může setkat ve svém každodenním životě, zahrnují tlačítka pro volání výtahu a tlačítka pro přechod pro chodce . Počáteční aktivace tlačítka přesune systém do žádajícího stavu, dokud není požadavek uspokojen. Následné aktivace tlačítka mezi počáteční aktivací a uspokojením požadavku nemají žádný účinek, pokud není systém navržen tak, aby upravil čas pro uspokojení požadavku na základě počtu aktivací.
Viz také
- Biordered sada
- Operátor uzavření
- Pevný bod (matematika)
- Idempotent kódu
- Idempotentní analýza
- Idempotentní matice
- Idempotentní vztah - zobecnění idempotence na binární vztahy
- Involution (matematika)
- Iterovaná funkce
- Seznam matic
- Nilpotentní
- Čistá funkce
- Referenční transparentnost
Reference
Další čtení
- „ Idempotent “ na FOLDOC
- Goodearl, KR (1991), von Neumann pravidelné prsteny (2. vydání), Malabar, FL: Robert E. Krieger Publishing Co. Inc., s. Xviii+412, ISBN 978-0-89464-632-4, MR 1150975
- Gunawardena, Jeremy (1998), „Úvod do idempotence“ (PDF) , v Gunawardena, Jeremy (ed.), Idempotency. Na základě workshopu, Bristol, Velká Británie, 3. – 7. Října 1994 , Cambridge: Cambridge University Press , s. 1–49 , Zbl 0898.16032
- „Idempotent“ , encyklopedie matematiky , EMS Press , 2001 [1994]
- Hazewinkel, Michiel ; Gubareni, Nadiya; Kirichenko, VV (2004), Algebry, prsteny a moduly. sv. 1 , Mathematics and its Applications, 575 , Dordrecht: Kluwer Academic Publishers, s. Xii+380, ISBN 978-1-4020-2690-4, MR 2106764
- Lam, TY (2001), První kurz nekomutativních kroužků , Absolventské texty z matematiky, 131 (2. vydání), New York: Springer-Verlag, s. Xx+385, doi : 10,1007/978-1-4419-8616 -0 , ISBN 978-0-387-95183-6, MR 1838439
- Lang, Serge (1993), Algebra (třetí ed.), Reading, Mass .: Addison-Wesley, ISBN 978-0-201-55540-0, Zbl 0848.13001p. 443
- Peirce, Benjamine. Lineární asociativní algebra 1870.
- Polcino Milies, César; Sehgal, Sudarshan K. (2002), An Introduction to group ring , Algebras and Applications, 1 , Dordrecht: Kluwer Academic Publishers, pp. Xii+371, doi : 10.1007/978-94-010-0405-3 , ISBN 978-1-4020-0238-0, MR 1896125