Aktuální vydání

celé číslo

05

2019

komunikace a software pro snímače a akční členy

tlakoměry

celé číslo

Inspiromat pro výuku a Tecomat: logika (nejenom) pro programátory – Díl II, část 6

Implikace a podmíněné příkazy (příkazy výběru)

Ve výrokové logice se často používá funkce implikace. Většinou jde o výroky typu: „jestliže platí P, potom platí Q; P implikuje Q; P je postačující podmínka pro Q; Q vyplývá z P; Q platí, kdykoliv platí P“. Implikace se označuje symbolem Þ, např. zápisem a Þ b, který čteme „jestliže a, potom b“. Výroku a se říká předpoklad (antecedent), výroku b závěr (důsledek, konsekvent). Funkce implikace je definována pravdivostní tabulkou na obr. 33 a výrazem:

(a Þ b) = (NOT a) OR (a AND b) = NOT a OR b

V tabulce na obr. 33 je uveden příklad „lidského způsobu interpretace“ výroku „jestliže prší, je mokro“, tedy „prší Þ mokro“. Implikace je pravdivá, je-li splněn předpoklad a současně závěr: a AND b, „prší a je mokro“ (z pravdivého předpokladu plyne pravdivý závěr). Rovněž je pravdivá v případě, kdy není předpoklad splněn: NOT a, „neprší“ – při nesplněném předpokladu nelze o pravdivosti závěru rozhodnout, může být jakýkoliv, „může být mokro i sucho“. Nepravdivá je jen tehdy, je-li pravdivý předpoklad a závěr je nepravdivý („prší a není mokro“). Ekvivalence (EQ) libovolných výroků a, b je logický součin implikace a Þ b a obrácené implikace b Þ a. Ve výrokové logice jí např. odpovídá výrok „nutná a postačující podmínka“. Označuje se jako a Û b. Je definována pravdivostní tabulkou na obr. 2, mapou na obr. 16a a výrazem: 

EQ (a, b) = (a AND b) OR (NOT a AND NOT b

Při popisu činnosti řízených objektů obvykle také používáme formu implikace, např. výroky:

„stiskneme-li tlačítko start, motor se roztočí“ nebo „stiskneme-li tlačítko stop, motor se zastaví“.

Zadáváme-li však požadavky na vytvářený program, používáme formu příkazu (neusuzujeme, ale přikazujeme), např.: „je-li stisknuto tlačítko start, roztoč motor“ nebo „po stisknutí tlačítka stop zastav motor“.

V syntaxi textového programovacího jazyka (např. ST) pak takové příkazy zapíšeme formou jednostranných podmíněných příkazů: 

IF start THEN motor := 1;

END_IF; 

Přípustná je i forma

IF start = 1 THEN motor := 1;

END_IF; 

Ta je ale nadbytečná a způsobuje méně efektivní překlad. Dále budeme používat první, zkrácený zápis, v němž se předpokládá, že proměnná nebo logický výraz v podmínkové části je pravdivý a není nutné tuto rovnost zapisovat. Je-li podmínkou nulová hodnota proměnné (výrazu), zapisuje se (NOT podmínka) – a opět mlčky předpokládáme její jedničkovou hodnotu. V příručce [4] se tato kategorie příkazů nazývá příkazy výběru. Zde ale budeme používat zavedené pojmenování podmíněný příkaz nebo též příkaz IF. Slovně lze příkaz interpretovat: „je-li splněna podmínka (stisknuto tlačítko start), pak vykonej příkaz (roztoč motor)“. Vývojový diagram je na obr. 34. Příkaz ale nic neříká o tom, co se stane, nebude-li podmínka (pravdivost proměnné start) splněna. Protože se program PLC vykonává cyklicky, znamená to, že v dalším cyklu bude zachována naposledy dosažená hodnota proměnné motor – příkaz realizuje funkci paměti, zde paměťovou funkci SET (zapnutí, nastavení). Podmíněný příkaz lze rovnocenně zapsat jako přiřazovací příkaz s logickým výrazem: 

motor := motor OR start; 

Jméno (identifikátor) motor se vyskytuje na obou stranách příkazu a odpovídá stejné proměnné umístěné na shodné adrese – liší se ale v čase. Proměnná na pravé straně odpovídá stavu před provedením příkazu (hodnotě operandu logické funkce výrazu před jeho vyčíslením), proměnné vlevo odpovídá stav po provedení příkazu (výsledek právě vyčíslené logické funkce). Příkaz tak vyjadřuje přiřazení: 

motor(k) := motor(k-1) OR start 

Jde o zpětnou vazbu, která je příčinou paměťového chování. V tomto případě je paměťová funkce žádoucí a je realizována záměrně. Po příkazu se motor roztočí a neodvolatelně běží, dokud není proveden příkaz: 

IF stop THEN motor := 0;

END_IF; 

Příkaz řeší paměťovou funkci RES (reset, vypnutí – obr. 35). Opět jej lze zapsat jako přiřazovací příkaz popisující zpětnou vazbu: 

motor := motor AND NOT stop; 

Kdybychom požadovali, aby se motor točil jen po dobu, kdy je tisknuto tlačítko start, a při jeho uvolnění se zastavil, můžeme použít oboustranný příkaz (obr. 36): 

IF start THEN motor := 1;

       ELSE motor := 0;

END_IF;

(Pozn. red.: V tomto případě je namístě použití spojky „pokud“. Ačkoliv se „pokud“ a „jestliže“ někdy považují za synonyma, z hlediska logiky mají různý význam.) Protože příkaz popisuje obě alternativy (pro obě hodnoty podmínkové proměnné start), není důvod k paměťovému chování. Požadavek je možné zapsat jednodušeji a přehledněji formou přiřazovacího příkazu, kdy hodnotu proměnné start přímo přiřadíme k proměnné motor – obr. 37

motor := start;

Přiřazovací příkaz (příkaz přiřazení, dosazení) přiřadí hodnotu proměnné, konstanty nebo výrazu (jakéhokoliv typu) umístěných vpravo od symbolu přiřazení („:=“, „pascalského rovnítka“) k proměnné vlevo od něj (musí mít shodný datový typ). V teorii a v učebnicích logiky mají logické výrazy formu rovnosti. Hodnota proměnné vlevo od rovnítka je rovna hodnotě výrazu nebo proměnné na pravé straně rovnosti. U přiřazovacích příkazů je forma podobná, jen se místo rovnítka používá symbol přiřazení. Proměnné nejsou abstraktní jména výroků, ale objekty, s nimiž operuje program. Jsou lokalizovány v paměťovém prostoru na konkrétních adresách.

V reálných programech se obvykle vyskytují složitější podmíněné příkazy a často ve velkém množství. Mnohdy „oslovují“ několik proměnných současně, někdy je zase stejná proměnná oslovována několika příkazy mnohdy z různých míst programu. Bývá to důsledek nesystematické koncepce nebo dodatečných změn a oprav programu. V dlouhém programu lze snadno přehlédnout místa, kde nebyly ošetřeny všechny kombinace proměnných nebo byly nastaveny na protichůdné hodnoty. Nevědomky tak vytváříme nežádoucí paměťové funkce nebo jiné chyby. Chyba se obvykle vynoří až v nejméně očekávané a naprosto nevhodné situaci. Nalezení její příčiny a oprava nebývají snadné ani rychlé. Mnohdy nepromyšlenou opravou jedné chyby vneseme do programu jinou chybu. Je-li program „nekonečným řetězcem podmíněných příkazů“, je velmi obtížné se v něm orientovat a zjistit jeho skutečnou funkci. S delším časovým odstupem to bývá „tvrdý oříšek“ i pro samotného autora, tím spíše pro nezúčastněného programátora, který má za úkol provést dodatečně doplňky nebo opravy.

Podrobnou analýzou lze obvykle zjistit, že program do značné míry realizuje soubor logických funkcí. Podmíněné příkazy jsou ale nejméně vhodným způsobem jejich realizace – není efektivní ani přehledný, často je zdrojem chyb. Naproti tomu lze logickou funkci snáze a přehledněji vyjádřit logickým výrazem s podstatně menším rizikem chyb. Dále jsou uvedeny ilustrativní příklady řešení logických funkcí podmíněnými příkazy. Není to návod, jak při programování postupovat – naopak varování, jakému postupu je lépe se vyhnout. Začneme od nejjednodušších (pozn. red.: pro odlišení, že nejde o matematický zápis, ale o programový kód, je pro zápis kódu použito bezpatkové písmo).

Funkci opakování (sledování) 

v := a;

odpovídá 

IF a THEN v := 1;

       ELSE v := 0;

END_IF; 

nebo 

v := 0;

IF a THEN v := 1;

END_IF; 

popř. 

v := 1;

IF NOT a THEN v := 0;

END_IF;


Negaci NOT 

v := NOT a;

lze zapsat

 IF a THEN v := 0;

ELSE v := 1;

END_IF; 

nebo 

v := 1;

IF a THEN v := 0;

END_IF; 

popř. 

v := 0;

IF NOT a THEN v := 1;

END_IF;

 

Logický součet OR 

v := a OR b; 

lze zapsat 

IF a THEN v := 1;

       ELSIF b THEN v := 1;

ELSE v := 0;

END_IF; 

nebo 

v := 0;

IF a THEN v := 1; // v := a

END_IF;

IF b THEN v := 1; // v := a OR b

END_IF; 

popř. 

v := a;

IF b THEN v := 1; // v := a OR b

END_IF;

 

Obdobně logický součin AND

 v := a AND b;

 lze zapsat

 IF NOT a THEN v := 0;

       ELSIF NOT b THEN v := 0;

       ELSE v := 1;

END_IF;

 nebo

 v := 1;

IF NOT a THEN v := 0; // v := a

END_IF;

IF NOT b THEN v := 0; // v := a AND b

END_IF;

 popř.

 v := a;

IF NOT b THEN v := 0; // v := a AND b

END_IF;

 Ještě uveďme, že postup

 v := a;

IF b THEN v := 0; // v := a AND NOT b;

END_IF;

 realizuje funkci

 v := a AND NOT b;

 a postup

 v := a;

IF NOT b THEN v := 1; // v := a OR NOT b;

END_IF;

 realizuje funkci

 v := a OR NOT b;

 

Dvojice lomítek „//“ v jazyce ST označuje začátek řádkového komentáře, který je ukončen koncem řádku a může obsahovat libovolné znaky. Ve zde použité třísloupcové sazbě jsme si dovolili nekorektnost a řádkový komentář pokračuje i na dalším řádku.

Dosud byly podmíněné příkazy soustředěné do jednoho místa v programu. Jednostranné podmíněné příkazy lze ale použít i jednotlivě na různých místech v programu. K proměnné lze příležitostně „přičíst“ hodnotu další proměnné nebo její negaci, popř. ji „vynásobit“ jinou proměnnou či její negací. To může být výhodou, ale současně rizikem, protože logická funkce je vytvářena postupně a snadno lze přehlédnout výsledné řešení, které může být výsledkem protichůdných požadavků.

Postup

 v := a;

IF NOT b THEN v := 0; // v := a AND b

END_IF;

IF c THEN v := 1; // v := (a AND b) OR c

END_IF;

IF d THEN v := 1; // v := (a AND b) OR c OR d

END_IF;

IF NOT e THEN v := 0; // v := ((a AND b) OR c OR d) AND e

END_IF;

IF NOT f THEN v := 0; // v := ((a AND b) OR c OR NOT d) AND e AND f

END_IF;

 realizuje logickou funkci

 v := ((((a AND b) OR c) OR d) AND e) AND f;

 Budeme ji nazývat „jednostranně závorkovaný logický výraz“. Závorky jsou v něm ale zbytečné, jsou uvedeny jen pro přehlednost. Kdybychom stejný výraz přepsali v opačném pořadí

 v := f AND e AND (d OR c OR b AND a);

 budou již některé závorky nutné. K řešení povede složitější postup. Nejprve je třeba řešit dílčí logické výrazy a teprve pak z nich sestavit výsledný výraz.

 v := f;

IF NOT e THEN v := 0; // v := f AND e

END_IF;

w := d;

IF c THEN w := 1; // w :=d OR c

END_IF;

u := b;

IF NOT a THEN u := 0; // u := b AND a

END_IF;

IF u THEN w := 1; // w := d OR c OR b AND a

END_IF;

IF NOT w THEN v := 0; // v := f AND e AND (d OR c OR b AND a)

END_IF;

 Podobně je nutné postupovat i u jiných závorkovaných výrazů. Například postup

 v := a;

IF b THEN v := 0; // v := a AND NOT b

END_IF;

w := b;

IF a THEN w := 0; // w := NOT a AND b

END_IF;

IF w THEN v := 1; // v := (a AND NOT b) OR (NOT a AND b)

END_IF;

 řeší logický výraz

 v := (a AND NOT b) OR (NOT a AND b);

 tedy funkci XOR, a lze jej jednodušeji napsat jako

 v := a XOR b;

 

Úloha 14

Podmíněnými příkazy řešte funkce OR a AND pro tři a více operandů.

 

Úloha 15

Podmíněnými příkazy řešte funkce NOR a NAND (negovaný OR a AND) pro dva a více operandů.

 

Úloha 16

Podmíněnými příkazy řešte funkce M3 (majorita ze tří) a prahové funkce pro čtyři proměnné.

 

Úloha 17

Do uvedených příkladů vneste drobné chyby (třeba zaměňte 0 a 1 nebo vynechte či doplňte NOT apod.), nechte program zkontrolovat kolegovi, změřte dobu, než chybu zjistí a opraví.

 

Úloha 18

Zkombinujte řešení popsaných (i jiných) příkladů a sekce jejich řešení různě promíchejte. Požádejte kolegu, aby program analyzovat a určil jeho funkci. Vneste do programu drobnou chybu a požádejte kolegu o její lokalizaci a opravu.

 

Úloha 19

Požádejte kolegu, aby funkce takového (nebo jiného netriviálního) programu rozšířil o zadané doplňky. Změřte dobu jeho zásahu a ověřte jeho správnost.

 Z uvedených příkladů je snad (doufejme) patrná neefektivnost řešení logických funkcí formou podmíněných příkazů. Je ale nutné přiznat, že autor volil příklady tak, aby tento rozdíl byl extrémně nápadný – a „měl před očima“ logický výraz, který pak přepisoval do formy podmíněných příkladů. V praxi nebývá situace takto „krystalicky jasná“. Textové jazyky, tedy i jazyk ST, nabízejí další příkazy, např. příkaz výběru CASE, iterační příkazy typu FOR, WHILE, REPEAT, ukončení smyčky EXIT a návrat RETURN [2], [4]. V praxi programy řeší nejenom logické úlohy, ale i úlohy smíšeného typu, které jsou kombinací logických a výpočetních (numerických) úloh. Podmíněné příkazy mnohdy operují s číselnými proměnnými nebo volí mezi alternativami různých úseků programu. Podmínky pro rozhodování jsou ale vždy logické proměnné (typu BOOLE), vzniklé vyčíslením logických výrazů nebo porovnáním čísel. Bývají výsledkem složitějších funkcí, které je účelné optimalizovat a tím program zjednodušit a zpřehlednit.

Vždy se vyplatí důsledně analyzovat zadání programu dřív, než začnete psát program – není to ztráta času. V přípravné fázi analýzy je účelné analyzovat a optimalizovat logické souvislosti, zvážit možnosti použití dat a jejich vhodných struktur, provést dekompozici složitého programu na odděleně řešené části, komunikaci mezi nimi a strategii ladění programu.

 

Kombinační a sekvenční úlohy

Dosud jsme se zabývali logickými úlohami kombinačního typu (s výjimkou příkladů řešení paměťových funkcí SET a RES). Hodnota kombinační funkce závisí jen na okamžité kombinaci hodnot svých operandů. Existuje ale širší třída logických funkcí, jejichž pravdivost je závislá na pořadí (sekvenci) operandů, popř. ještě na čase – souhrnně se nazývají sekvenční funkce. Kategorie sekvenčních funkcí je podstatně širší a jejich řešení bývá komplikovanější. Sekvenční charakter má však většina logických úloh, které se používají v praxi. Bude jim věnována další část seriálu. Nejprve budou uvedeny příklady intuitivního postupu řešení jednoduchých sekvenčních a paměťových funkcí. Později bude popsána metodika systematického postupu s využitím stavových diagramů a nástroje SFC, vhodná zejména pro řešení složitějších úloh z praxe. 

Ing. Ladislav Šmejkal, CSc., Teco, a. s., a externí redaktor časopisu Automa

Obr. 33. Pravdivostní tabulka implikace

Obr. 34. Vývojový diagram k jednostrannému podmíněnému výrazu – příkazu SET
Obr. 35. Vývojový diagram k jednostrannému podmíněnému příkazu RES

Obr. 36. Vývojový diagram k oboustrannému podmíněnému příkazu

Obr. 37. Vývojový diagram k příkazu přiřazení

Obr. 38. Aristoteles ze Stageiry (384–322 př. n. l.)

Obr. 39. George Boole (1815–1864)
Obr. 40. Claude Elwood Shannon (1916–2001)
Obr. 41. Maurice Karnaugh (nar. 1924)
Obr. 42. Lotfi Aliasker Zadeh (1921–2017)

 

Galerie osobností

Aristoteles ze Stageiry

Za zakladatele logiky je označován Aristoteles ze Stageiry (obr. 28). Byl filozofem vrcholného období řecké filozofie, nejvýznamnější žák Platonův a vychovatel Alexandra Makedonského. Jeho rozsáhlé encyklopedické dílo položilo základy mnoha věd. Narodil se roku 384 př. n. l. v osadě Stageira na poloostrově Chalkidiki, v dnešní řecké Makedonii. Jeho otec Nikomachos byl osobním lékařem makedonského krále Filipa II. V letech 367 až 347 Aristoteles studoval a pak i vyučoval v Platonově Akadémii v Athénách. Roku 343 př. n. l. jej povolal král Filip jako vychovatele svého syna, budoucího Alexandra Velikého. Roku 322 př. n. l., po smrti Alexandra Velikého, byl Aristoteles v rámci reakce proti Alexandrovi obviněn z rouhání bohům a odsouzen. Odešel do vyhnanství do Chalkidy, kde v následujícím roce zemřel.

Nelze říci, že před Aristotelem logika neexistovala. Logika sama o sobě je stejně stará jako lidstvo – jsou to zákony, principy a hranice lidského způsobu uvažování. Člověk, pokud skutečně uvažuje, nemůže postupovat jinak než logicky. Bezprostředními předchůdci Aristotelova úsilí o vytvoření logiky jako vědy jsou Sokrates a Platon, kteří obrátili svou pozornost k přesnému definování pojmů. Aristoteles není zakladatelem logiky jako takové, je však zakladatelem logiky jako vědy. První stanovil její pravidla a vytvořil její systém. Vymezil ji jako samostatnou disciplínu. Oproti svým předchůdcům přišel se zásadně odlišným přístupem k pojetí argumentace a myšlení. Jeho práce tak představuje základní zlom. Uvědomil si, že z hlediska správnosti myšlení není důležitý jeho obsah, ale forma.

Název logika je odvozen od řeckého slova „logos“. Aristoteles toto slovo ještě neznal a používal označení „analytika“ a jiné termíny. Logika je nauka o správném myšlení, přesněji o formách a metodách myšlení. Nemůže ukázat, co musíme myslet, ale pouze jak musíme v myšlení postupovat, abychom od něčeho daného dospěli ke správným závěrům. To odlišuje logiku jako formální vědu od věd reál­ných. Od psychologie, která se také zabývá lidským myšlením, se odlišuje tím, že neučí, jak myšlení skutečně probíhá, ale jak má probíhat, aby vedlo k vědeckým poznatkům. Je tedy zjevné, že logika patří k nejabstraktnějším a tím i k nejobtížnějším oborům filozofie.

Tímto novým vymezením položil Aristoteles základy soustavné filozofie jako snahy „porozumět tomu, co jest“, ale také položil základy dalších věd. Ve filozofické oblasti psal o estetice, etice, metafyzice, rétorice a teologii, zabýval se výchovou a vzděláváním, ale i literaturou a poezií. Ačkoliv v přírodních vědách jsou jeho jednotlivé názory překonané, mnoho z jeho způsobu zkoumání, třídění a argumentace zůstává dodnes živé.

 

George Boole

Za zakladatele moderní logiky je považován anglický matematik, pedagog, filozof a logik George Boole (2. listopadu 1815 – 8. prosince 1864; obr. 29). Zabýval se obory diferenciálních rovnic a algebraické logiky. Proslavilo jej autorství knihy The Laws of Thought (1854), ve které jsou popsány základy moderní aritmetiky, později nazvané jako Booleova algebra. Ta později položila základy informačnímu věku.

George Boole se narodil v Lincolnshiru v Anglii. Byl synem obuvníka. Už v šestnácti letech se stal živitelem rodiny, když přijal pozici učitele v Doncastru. Docházel do místního mechanického institutu, jehož zakladatel Edward Bromhead se znal s otcem George Boola, pomáhal Georgovi a doučil jej v matematice. V devatenácti letech si Boole úspěšně založil vlastní školu v Lincolnu, o čtyři roky později převzal Hallovu akademii ve Waddingtonu. Postupně získával kontakty s britskými akademickými matematiky. Studoval algebru v podobě symbolických metod, které byly objeveny právě v jeho době. V roce 1849 byl jmenován profesorem matematiky na Queen’s College v irském Corku. Oženil se roku 1855 a měl pět dcer.

 

Claude Elwood Shannon

Jako „otec teorie informace“ je nazýván Claude Elwood Shannon (30. dubna 1916, Petoskey, Michigan – 24. února 2001, Boston, USA; obr. 30). Byl to americký elektronik a matematik. Vytvořil teorii pro návrh logických elektronických obvodů, které jsou základem konstrukce počítačů a současného „digitálního věku“. V roce 1948 představil lineární model komunikace, též zvaný Shannonův a Weaverův model.

Již v dětství byl nadšeným radioamatérem. Vystudoval Univerzitu v Michiganu a v roce 1936 se stal asistentem na Massachusetts Institute of Technology (MIT). Téhož roku získal magisterský titul za diplomovou práci o využití Booleovy algebry při návrhu reléových sítí. Všiml si totiž podobnosti mezi Booleovou algebrou a relé. Booleova algebra operuje na množině proměnných o dvou hodnotách a rovněž relé má dva výrazně odlišené stavy – a tuto souvislost využil. Založil nový vědní obor – teorii logických sítí a aplikované logiky. Jeho teorie (a z ní odvozená metodika návrhu) je použitelná i pro řešení elektronických logických obvodů, jejichž prvky (tranzistory) také pracují ve dvou výrazně odlišených stavech. Tím otevřel prostor pro teorii konečných automatů a následně pro teorii číslicových počítačů a číslicové techniky obecně. Později ve své dizertační práci aplikoval podobný postup na genetiku. Od roku 1942 pracoval v Bellových laboratořích, kde působil patnáct let a vytvořil zde základy teorie informace. V roce 1950 publikoval vědeckou práci nazvanou Programming a Computer for Playing Chess. Popisoval, jak stroj může hrát šachy. Je rovněž známý svým vzorkovacím teorémem, který má význam pro teo­rii číslicového zpracování spojitých signálů. Na MIT působil do roku 1978. Zemřel 24. února 2001 ve věku 84 let.

 

Maurice Karnaugh

Autorem nejčastěji používané metody minimalizace logických výrazů s využitím dvojrozměrných map je americký fyzik Maurice Karnaugh (obr. 31). Po něm jsou pojmenovány Karnaughovy mapy (K-mapy). Byl to významný přínos k řešení logických sítí, počítačů a číslicové techniky. Maurice Karnaugh se narodil v roce 1924 v New Yorku, studoval matematiku a fyziku na City College v New Yorku (1944 až 1948) a na Yaleově univerzitě studium dokončil. Postupně získal titul bakaláře (1949), Master of Science (1950) a doktorát (1952). V období 1952 až 1956 pracoval v Bellových laboratořích, kde v roce 1954 poprvé použil svou „Karnaughovu mapu“ ke zjednodušení logických elektronických obvodů. Zde rovněž patentoval metodu pulzně kódové modulace (PCM), která se stala standardem v oboru číslicové zvukové techniky v počítačích, telefonii, kompaktních discích (CD) a jiných číslicových audiovizuálních zařízeních. Poté přešel do IBM, kde v různých divizích a výzkumných centrech pracoval do roku 1989. V letech 1970 až 1989 se věnoval studiu mnohostavových komunikačních sítí a třídě vysokorychlostních počítačových sítí. V roce 1976 byl zvolen IEEE Fellow a nakonec v letech 1980 až 1999 působil na newyorské polytechnice ve Westchesteru.

 

Lotfi Aliasker Zadeh

Jméno Lotfi Zadeh je spojováno s autorstvím fuzzy logiky, tedy zobecněním logiky, v níž proměnné nabývají spojitých hodnot pravdivosti mezi nulou a jedničkou. Málo se ví, že je spoluautorem Z-transformace, kterou zveřejnil spolu s Johnem Ragazzinim v roce 1952. Podobně jako je Laplaceova transformace teoretickým nástrojem pro řešení spojitých dynamických systémů (např. v teorii regulace nebo elektrických obvodů), je Z-transformace využívána ke zpracování posloupností hodnot, tedy vzorkovaných spojitých signálů, především v oborech číslicové regulace nebo číslicové filtrace.

Lotfi Zadeh (4. února 1921 – 6. září 2017; obr. 32) byl matematik, počítačový vědec, elektrotechnik, výzkumník v oboru umělé inteligence a profesor počítačových věd na Kalifornské univerzitě v Berkeley. Narodil se v Baku v Ázerbájdžánu, jeho otec byl novinář íránsko-ázerbájdžánského původu, matka pediatrička ruskožidovského původu. Roku 1931 se rodina přestěhovala do Teheránu, kde dalších osm let chodil do místní střední školy. V roce 1942 dokončil Teheránskou univerzitu. Roku 1943 se rozhodl emigrovat do Spojených států, kam se dostával složitou cestou přes Káhiru, kde čekal na loď a na potřebné dokumenty k cestě. Do USA se dostal v polovině roku 1944 a nastoupil na Massachusettský technologický institut (MIT) jako postgraduální student a roku 1946 zde získal magisterský titul v elektrotechnice. Následně odešel na Kolumbijskou univerzitu jako doktorand a titul z elektrotechniky zde získal roku 1949. Následující rok se stal asistentem a vyučoval zde deset let, až byl v roce 1957 povýšen na řádného profesora. V roce 1959 přesídlil na Kalifornskou univerzitu v Berkeley. Roku 1965 zde vydal práci na téma fuzzy množin. V roce 1973 navrhl teorii fuzzy logiky.

 

[Wikipedia, Wikisofia, IT History Society.]