Кіріспе

Компьютерлік ғылымда Сети-Уллман алгоритмі – Рави Сети және Джеффри Д. Уллманның, осы алгоритмді ойлап тапқандардың есімімен аталатын, абстрактілі синтаксистік ағаштарды мүмкіндігінше аз тіркегіштерді қолданатын машиналық кодқа түрлендіруге арналған алгоритм.

Шолу

Арифметикалық өрнектер үшін кодты жасау кезінде компилятор өрнекті нұсқамалар саны және белгілі бір кіші ағашты бағалау үшін қажетті регистрлер саны тұрғысынан қалай аударудың ең тиімді жолын анықтауы керек. Әсіресе, бос регистрлер жетіспесе, бағалау реті жасалған кодтың ұзындығына әсер етуі мүмкін, себебі әртүрлі реттелулер аралық мәндердің жадқа құйылуына және кейін қалпына келтірілуіне себеп болуы мүмкін. Сети-Улман алгоритмі (Сети-Улман нөмірлеуі деп те аталады) мүмкіндігінше аз нұсқамалар мен жадқа сілтемелерді қажет ететін кодты құрады (операторларға қатысты коммутативтілік және ассоциативтілік қағидалары ең көп жағдайда қолданылады, бірақ дистрибутивтік заңдар қолданылмайды). Алгоритм, егер қолданылған өрнектер үшін коммутативтілік немесе ассоциативтілік қағидалары қолданылмаса, да сәтті орындалады, сондықтан арифметикалық түрлендірулерді қолдану мүмкін емес. Алгоритм сондай-ақ ортақ қосымша өрнектерді пайдаланбайды және жалпы бағытталған ациклдік графтар түрінде ұсынылған өрнектерге тікелей қолданылмайды.

Жетілдірілген Сети-Уллман алгоритмі

Сети-Уллман алгоритмінің жетілдірілген нұсқасында арифметикалық өрнектер ең бастысы қолданылатын операторлардың алгебралық қасиеттерін пайдаланып түрлендіріледі.