Кіріспе

Компьютерлік бағдарламалауда және әсіресе Lisp тілінде, қауымдастыру тізімі, көбінесе "алiст" деп аталады, бұл әрбір тізім элементінен (немесе түйінден) кілт пен мән тұратын байланысты тізім. Қауымдастыру тізімі мәнді кілтпен байланыстырады дейді. Белгілі бір кілтқа байланысты мәнді табу үшін тізбекті іздеу қолданылады: кілт табылғанға дейін тізімнің әрбір элементі басынан бастап ретімен тексеріледі. Қауымдастыру тізімдері ассоциативтік массивті іске асырудың оңай жолын ұсынады, бірақ кілттер саны өте аз болғанда ғана тиімді болады.

Операция

Ассоциативтік массив – кілт-мәнді жұптар жиынтығын сақтауға және белгілі бір кілтке сәйкес келетін мәнді табуға арналған абстрактілі дерек типі. Қауымдастыру тізімі осы дерек типін іске асырудың қарапайым жолын ұсынады. Кілттің берілген қауымдастыру тізімінде мәнмен байланысты екенін тексеру үшін, тізімді оның бірінші түйінінен бастап іздеуді жүргізу керек, кілтты қамтитын түйін табылғанға дейін немесе іздеу тізімнің соңына жеткенге дейін (бұл жағдайда кілт жоқ). Қауымдастыру тізіміне жаңа кілт-мәнді жұпты қосу үшін, осы кілт-мәнді жұпқа арналған жаңа түйін жасалып, түйіннің сілтемесі қауымдастыру тізімінің бұрынғы бірінші элементіне орнатылады, ал қауымдастыру тізімінің бірінші элементі жаңа түйінмен алмастырылады. Кейбір қауымдастыру тізімі іске асырулары бірдей кілттері бар бірнеше түйіндерге рұқсат бермейді, бірақ мұндай қайталаулар осы іздеу алгоритмі үшін мәселе тудырмайды: тізімде кейінірек пайда болатын қайталанған кілттер назардан тыс қалады. Сондай-ақ, кілтті қауымдастыру тізімінен жоюға болады, кілттің әрбір кездесуін табу үшін тізімді қарап шығып, кілтті қамтитын түйіндерді тізімнен алып тастау арқылы. Үлкен тізімдер үшін бұл, ассоциативтік масситті екілік іздеу ағашы немесе хэш-кесте ретінде ұсыну арқылы қол жеткізілетін уақыттан әлдеқайда баяу болуы мүмкін. Сонымен қатар, егер тізімдегі қайталанған кілттері бар элементтерді жою үшін тізім үнемі тазаланбаса, бірдей кілтке байланысты бірнеше мән тізімнің көлемін ұлғайтады, осылайша іздеу уақытын ұлғайтады, ал тиімділікке ешқандай артықшылық бермейді. Қауымдастыру тізімінің бір артықшылығы – жаңа элементті тұрақты уақытта қосу мүмкіндігі. Сонымен қатар, кілттердің саны өте аз болған кезде, қауымдастыру тізімін іздеу екілік іздеу ағашын немесе хэш-кестені іздеуден тиімдірек болуы мүмкін, олардың іске асырылуының қарапайымдығына байланысты.