суббота, 13 июня 2009 г.

Поиск наибольшей общей последовательности Вместо вступления

С. Г. Кипров
Поиск наибольшей общей последовательности
Вместо вступления
Задача нахождения общей подпоследовательности двух последовательностей широко ис-пользуется во многих областях, например: проверки правописания, сравнения файлов, изучение мутации генов. И если для первых двух областей достаточно сказать одинаковые последова-тельности или нет (или количество общих элементов) – для этого подойдет алгоритм 2.а, то в задачах, связанных с генетикой, необходимо найти общую подпоследовательность максималь-ной длинны. Для этой цели мог бы подойти любой алгоритм, O(N2) времени и использующий двумерный массив, но для его хранения памяти может быть недостаточно, т.к. длина цепочки ДНК может достигать нескольких сотен тысяч, а иногда и миллионов символов (обозначающих кислоты).
Для подобных задач, как нельзя лучше, подойдет алгоритм 2.б.
В статье кроме алгоритмов 2.а и 2.б, будут рассмотрены алгоритмы, им предшествовав-шие, работающие над той же проблемой, но с меньшей производительностью.
Итак, начнем!
Алгоритм 1. Малого объема памяти, но обратно пропорционального ему времени
Данный алгоритм достаточно прост и может быть применен на небольших похожих по-следовательностях, в приложениях не часто использующих данную операцию. Суть метода за-ключается в том, что программа использует символы двух исходных последовательностей для построения графа (возможно циклического), одновременно ищет путь до конечной точки (на рис.1 – большая красная точка) с минимальным количеством несовпадений (на рис.1 несовпаде-ния – не вертикальные ребра).
Временная оценка метода: Временная сложность данного алгоритма –((2*(N+M))!/((N+M)!(N+M)!)) времени. Данный алгоритм нахождения максимальной общей подпоследовательности похож на переборный вариант решения задачи о минимальном пути че-репашки, поэтому за подробностями оценки можно обращаться к [2].
Суть метода: Метод основан на обходе графа в глубину с возвратом. На каждом шаге про-граммы прибавляется только одно на совпадающее ребро и следующее за ним совпадающие ребра (если таковые существуют). По достижении конца графа, возвращаемся на начальное зна-чение предыдущего шага, и если первый раз на данном шаге поиска в графе путь «уходил» вправо, то при возврате путь «уходит» влево, создавая дальнейший путь. (Построение графа по-казано на рис.1).
Усовершенствование: Для некоторого ускорения в работе программы можно учитывать еще количество шагов по первому и дальнейшему достижению конечной точки. И если в теку-щем пути количество невертикальных ребер превосходит количество невертикальных ребер лучшего пути, то построение данной ветки в графе закончено.
Часть алгоритма с некоторым усовершенствованием представлена ниже:
Procedure Solve(x,y:integer{length(a),length(b)}); // A,B – последовательности, представлен-ные в виде массива
begin

delete(Res,((x+y-step)div 2)+1,length(Res));

// проходим по вертикальным ребрам
while (A[x+1]=B[y+1])and(x and(y begin
inc(x);
inc(y);
Res:=Res+A[x];
end;

//вызов рекурсии с новыми значениями индекса сравниваемых символов
if ((x begin
if x begin inc(Step); Solve(x+1,y); end;
if y begin inc(Step); Solve(x,y+1);
end;

//улучшение и хранение оптимального пути
end else
begin
if (x>=length(A))and(y>=Length(B)) then
begin
if length(Res)>Length(BestRes) then
begin
BestStep:=Step;
BestRes:=Res;
end;
end;
end;
dec(step);
end;

Алгоритм 2. O(ND) временной алгоритм
Временных O(ND) алгоритмов существует несколько, мы не будем затрагивать все из них, только укажем, что данный алгоритм 2.а (алгоритм Myers’а [1]) несколько напоминает алгоритм Нудельмана-Вунша [2] и по времени работы и по объему занимаемой памяти (если требуется вывод всех путей), но в некоторых случаях он может быть гораздо производительней – при не-больших различиях в последовательности (это существенной заметно, если количество разли-чий не превосходит 25% символов). В случае если требуется только посчитать количество эле-ментов в подпоследовательности, то данный алгоритм может быть очень хорош, т.к. в этом слу-чае он занимает линейный объем памяти (особенно эффективен при больших длинах примерно одинаковых последовательностей).
Алгоритм 2.а O(ND) временной алгоритм
Предварительные разъяснения. Редактируемый граф.
Пусть A=a1a2…an и B=b1b2…by — последовательность длины N и M соответственно. Ре-дактируемый граф A и B обладает вершинами в каждой точке сети (x,y), где x[0,N], y[0,M]. Редактируемый граф обладает вертикальными, горизонтальными и диагональными ребрами. Вертикальные ребра соединены с соседними вершинами справа, т.е. (x-1,y)(x,y), где x[1,N], y[0,M]. Горизонтальные ребра соединены с соседними вершинами сверху, т.е. (x,y-1)(x,y), где x[0,N], y[1,M]. Если ax=by, тогда образуется диагональное ребро, соединяющее диаго-нальных соседей так, что (x-1,y-1)(x,y). Точки (x,y), для которых ax=by назовем равными точ-ками. На рис.2 представлен граф для двух последовательностей (последовательности отличны от последовательностей алгоритма 1).
Путь длинной L это последовательность из L равных точек, (x1,y1)(x2,y2)…(xL,yL), таких, что xiПроблема нахождения наибольшей общей подпоследовательности равняется нахождению пути из (0,0) в (N,M) с наибольшим количеством диагональных ребер. А проблема нахождения кратчайшей редактируемой последовательности в свою очередь равняется нахождению пути из (0,0) в (N,M) с минимальным количеством недиагональных ребер. Если мы присвоим диаго-нальным ребрам вес 0, а не диагональным 1, то данную задачу можно решить за счет нахожде-ния пути с минимальной стоимостью во взвешенном графе.
Суть: Пусть D-путь начинается в (0,0), который содержит D недиагональных ребер. 0 путь доложен содержать только диагональные ребра. На следующем шаге мы добавляем к имеюще-муся пути еще одно либо вертикальное, либо диагональное ребро (вызываем либо (x+1,y), либо (x,y+1)) и следующие за ним диагональные ребра (если таковые имеются). Таким образом, D путь должен состоять из D-1 следующего недиагонального ребра и возможно пустой последова-тельностью диагональных ребер, названных змейкой. Прохождение по графу будет продолжать-ся до тех пор, пока (x,y) не достигнет правого нижнего угла (если смотреть на рисунок так, как задумывал автор).
Необходимо упомянуть два важных момента для создания алгоритма:
1. за один шаг невозможно пройти более 1 недиагонального ребра
2. при добавлении змейки к D-пути, необходимо брать наибольшее число диагональных ребер, иначе полученный путь может оказаться не наибольшей общей подпоследовательностью
3. из 1 следует, что любой D-путь содержит ровно (D-1) не диагональное ребро (т.к. всего D шагов на каждом из которых, кроме первого, содержалось 1 недиагональное ребро)
Представленный ниже процедура предлагают нахождение длины максимальной общей по-следовательности.

Procedure Solve;
var x,y,k,D,Dout:integer;
begin
Res[1]:=0; //вспомогательное значение для 0 пути

//внешний цикл For – расширяет область диагоналей на каждом шаге
For D:=0 to length(A)+Length(B)do
begin
//внутренний цикл For – начинает проход с самой левой диагонали и
//заканчивает на самой правой
For k:=-d to d do

//проход по диагоналям, находящимся через 1 диагональ с самой левой
//об этом позже в леммах 1 и 2
If (abs(k) mod 2)=(d mod 2)then begin
//выбор диагонали (D-1)-пути (пути-предка)
If (k=-d)or(k<>D)and(Res[k-1] then x:=Res[k+1]
else x:=Res[k-1]+1;
y:=x-k;
//создание змейки максимальной длины
While x begin inc(x);
inc(y); end;
Res[k]:=x;
//проверка условия выхода из процедуры
If (x>=length(A))and(y>=length(B))then
begin
Res[k] – длина максимальной последовательности};
exit
end
end;
end;

На практике алгоритм ищет D-пути, где D<= максимуму и если такой путь достигает (N,M) тогда любая редактируемая последовательность для A и B должна по строке exit быть больше чем максимальная длина последовательностей (далее просто максимум). Полагая, что максимум эта сумма двух длин последовательностей, алгоритм гарантированно найдет макси-мальную длину общей последовательности. Рис.3 ниже показывает найденный D-путь, когда алгоритм применен к примеру на рис.1. Заметим, что несуществующая точка (0,-1) была введена для нахождения змейки 0-пути. Также заметим, что D-пути не увеличиваются, достигая правой и нижней границ в редактируемом графе при работе алгоритма. Эта пограничная ситуация об-работана тем условием, что после граничных ситуаций в одной из последовательностей нет символов.


Что бы не быть голословным докажем 1 и 3 утверждения (они также упоминаются в опи-сании процедуры Solve):
Лемма 1: D путь должен заканчиваться на диагонали k{-D,-D+2,…D-2,D}.
Доказательство: 0 путь состоит исключительно из диагональных ребер и начинается на диагонали 0. Отсюда он должен заканчиваться на диагонали 0. Предположим, что D путь дол-жен заканчиваться на диагонали k{-D,-D+2,…D-2,D}. Каждый (D+1) путь состоит из преды-дущего D пути, заканчивающегося, как сказано, на диагонали k, недиагонального ребра закан-чивающегося на диагонали k-1 (k+1) и змейки, которая также должна заканчиваться на диагона-ли k-1 (k+1). Из этого следует, что каждый (D+1) путь должен заканчиваться на {(-D)1,(-D+2) 1,… (D-2) 1,D1}={-D-1,-D+1,-D+3,…D-1,D+1}. Таким образом, можно продолжить рассуж-дения для следующих D+1+l-путей и для предыдущих D-l-путей, где l-произвольное целое чис-ло. Лемма подразумевает, что D путь заканчивается исключительно на нечетной диагонали, ко-гда D нечетное и на четной, когда D четная.
D путь является самым длинным на диагонали k, тогда и только тогда, когда один из D пу-тей заканчивается на диагонали k, чья конечная точка содержит наибольшее возможное число рядов (столбцов) всех таких путей. Другими словами из всех D путей, заканчивающихся на диа-гонали k, он заканчивается на самом длинном пути из всех начинавшихся в (0,0). Следующая лемма дает характеристику длиннейшего D пути, и реализует жадный принцип: длиннейший D путь получается путем увеличения длиннейшего (D-1) пути.
Лемма 2: Самый длинный 0 путь заканчивается в (х,х), где х – минимум (z-1II axbz или z>M или z>N). Самый длинный D путь на диагонали k может быть заменен без потерь на самый длинный D-1 путь на диагонали k-1, следующее горизонтальное ребро, и следующая наиболее длинная змейка или он может быть заменен на самый длинный D-1 путь на диагонали k+1, сле-дующее вертикальное ребро, и следующая наиболее длинная змейка.
Доказательство: Основа 0 путей проста. Как замечалось ранее, D путь содержит D-1 путь, недиагонального ребра и змейки. Если D путь заканчивается на диагонали k, из этого следует, что D-1 путь должен заканчиваться на диагонали k1 в зависимости от того, горизонтальное или вертикальное ребро было выбрано перед финальной змейкой. Финальная змейка должна быть максимальной, т.к. D путь не будет максимальным, если змейку можно будет увеличить. Пред-положим D-1 путь не самый дальний на этой диагонали. Но тогда самый дальний D-1 путь мо-жет быть связан с последней змейкой D пути данным недиагональным шагом. Таким образом, D путь по желанию может быть всегда разложен на D-1-путь, недиагональное ребро и змейку (ес-ли хранить предыдущее значение).
Время выполнения процедуры: Данная процедура обладает временем O((M+N)max(N,M)). Складывающимся из:
• внешний цикл повторяется в худшем случае M+N раз
• внутренний цикл For k:=-D to D повторяется 2D+1 раз
• обращение ко всем внутренним операциям во внутреннем цикле For k:=-D to D происхо-дит за счет условия (abs(k) mod 2)=(d mod 2), которое определяет шаг ((D div 2)+(D mod 2)) раз
• таким образом внутренние операции, кроме цикла While повторяются D/2 раз (округле-ние)
• если цикл While повториться хотя бы один раз, то время выполнения процедуры будет улучшено, поэтому его повторение мы будем учитывать только для худшего случая, т.о. он будет пропорционален O(1)
• исходя из всех вышеперечисленных пунктов общее время складывается только из двух циклов For и времени затрачиваемом на внутренние операции, и в худшем случае на данную процедуру уйдет O((M+N)max(N,M)) времени.
Замечание: Как было сказано выше, для вывода обратного пути итогового массива D не-достаточно, необходимо знать еще и предыдущее значение. Поэтому для вывода обратного D-пути следует хранить все исходные массивы, что иногда может и не удовлетворять условиям задачи (на больших последовательностях), но в некоторых случаях он может быть полезен.
Алгоритм 2.б Улучшенный алгоритм 2.а с линейным объемом памяти
Усовершенствованный алгоритм Mayers’а [1].
Как было сказано выше, для вывода пути необходимо запоминать массив D на каждом по-вторении внешнего цикла For. Таким образом, для вывода общей последовательности необхо-дим квадратичный объем памяти. Поэтому попробуем уменьшить объем до линейного. Для это-го немного изменим структуру алгоритма. Алгоритмом, представленным выше, определяет ко-личество не диагональных ребер в максимальной общей последовательности.
Для дальнейшей сборки алгоритма используем тип алгоритма “разделяй и властвуй”. Раз-делим максимальную последовательность пополам, пусть мы остановились на точке (x,y), затем найдем максимальную последовательность от (0,0) до (x,y) и от (x’,y’) до конечной точки. Сле-дующим шагом повторим вышеописанные действия. Так повторяем до тех пор, пока в общей последовательности не останется недиагональных ребер  1. Для доказательства возможности использования данного алгоритма воспользуемся леммой 3 и ее доказательством.
Лемма 3: D-путь из (0,0) до (N,M) существует тогда и только тогда, когда существует [D/2]-путь из (0,0) в (x,y) и [D/2]-путь из некоторой точки (u,v) до (N,M), такой, что:
{выполнимость} (u + v)  [D/2] и (x + y)  (N+M-[D/2]) и
{частичное совпадение} x – y = u – v и x  u
Более того, оба [D/2]-пути составляют D-путь из (0,0) до (N,M)
Доказательство: Предположим, что существует D-путь из (0,0) до (N,M). Он может быть разделен от начала (0,0), до точки (x,y),что является серединой змейки [D/2]-пути из (0,0) до (x,y) и [D/2]-пути от (u,v) до (N,M), где (u,v)=(x,y). Путь из (0,0) до (u,v) может содержать мак-симум u + v не диагональных ребер и [D/2]-путь до (u,v) предполагает, что u + v  [D/2]. Путь их (x,y) до (N,M) может содержать (N+M)-(x+y) не диагональных ребер и [D/2]-путь подразумева-ет, что x+yN+M-[D/2]. И, наконец, u-v=x-y и ux, т.к. (x, y)=(u,v).
Обратно, предположим [D/2] и [D/2]-пути существуют. Но ux подразумевает, что сущест-вует k-путь из (0,0) в (u,v), где k[D/2]. По лемме 1, =[D/2]-k кратно 2, т.к. оба пути и k и [D/2] заканчиваются на одной диагонали. Более того, k-путь содержит (u + v - k)/2/2 диагоналей, т.к. u + v  [D/2]. Заменив каждую /2 диагонали в k-пути с парой вертикальных и горизонталь-ных ребер, [D/2] путь из (0,0) до (u,v) найдется. Но тогда будет существовать D-путь из (0,0) до (N,M) состоящий из этого [D/2]-путь до (u,v) и и данного [D/2]-путь из (u,v) до (N,M). Замете, что [D/2]-путь это часть D-пути. И симметричный [D/2]-путь это также часть D-пути из (0,0) до (N,M).
Ниже приведены процедуры для алгоритма, использующего вышеописанный метод.

//процедура нахождения серединного пути для двух
//подпоследовательностей
function MiddlePoint(var x,y,u,v:integer):Integer;
var D,k,l,delta:integer;
way,back:MyArray;
begin
delta:=length(AA)-Length(BB);
FillChar(Way,SizeOf(Way),0);
FillChar(Back,SizeOf(Back),10);
Way[1]:=0;
Back[delta+1]:=Maxim(Length(AA),Length(BB))+1;
For D:=0 to ((length(AA)+Length(BB))div 2)+1 do
begin
//прямой путь
For k:=-d to d do
If (abs(k) mod 2)=(d mod 2)then
begin
If (k=-d)or(k<>D)and(Way[k-1] then x:=Way[k+1]
else x:=Way[k-1]+1;
y:=x-k;
While (x begin inc(x);
inc(y); end;
Way[k]:=x;
//выход из функции нахождения срединной точки
If (x>=length(AA))and(y>=length(BB))or (Way[k]>=Back[k])
then begin
u:=Back[k];
v:=Back[k]-k;
MiddlePoint:=2*D-1;
exit;end;
end;


//обратный путь
For k:=-d to d do
If (abs(k) mod 2)=(d mod 2)then
begin
// переопределение нумерации диагоналей в обратном пути
// для боле легкого понимания
l:=k+delta;
If (k=-d)or(k<>D)and(Back[l-1]>Back[l+1])
then u:=Back[l+1]-1
else u:=Back[l-1];
v:=u-l;
While (u>0)and(v>0)and(AA[u]=BB[v])do
begin dec(u);
dec(v); end;
Back[l]:=u;
//выход из функции нахождения срединной точки
If (u<=0)and(v>=0)or (Way[l]>=Back[l])
then begin
x:=Back[l];
y:=Back[l]-l;
MiddlePoint:=2*D;
exit;end;
end;
end;
end;

// функция нахождения подпоследовательности из имеющейся
// последовательности, координат начала и конца подпоследовательности
function out(Script:string;x,u:integer):string;
var i:integer;
st:string;
begin
st:='';
for i:=x to u do
st:=st+Script[i];
out:=st;
end;


// основное тело процедуры решения
Procedure Solve(AA,BB:string);
var x,y,u,v:integer;
begin
if (length(AA)>0)and(Length(BB)>0) then
begin
// если в пути до срединной точки более одного недиагонального ребра,
// то делим путь дальше
if MiddlePoint(x,y,u,v)>1 then
begin
Solve(out(AA,1,u),out(BB,1,v));
if (x>u)and(y>v)then write(Out(AA,u+1,x));
Solve(out(AA,x+1,length(AA)),out(BB,y+1,length(BB)));
end else
// если путь содержит менее двух различий, то выводим
// последовательность минимальной длинны
if length(AA)<=length(BB) then
write(AA) else write(BB)
end;
end;

По примерным подсчетам времени на работу данной процедуры требуется в два раза больше, чем для описанной выше процедуры с циклами For и While, также время тратиться на проверку всех условий внутри рекурсии. Время работы программы, как было сказано выше не намного хуже лучших вариантов реализации. Теперь подсчитаем объем памяти. На хранение всех последовательностей в стеке рекурсии требуется объем равный 2 объема, необходимых для хранения исходных последовательностей (т.к. алгоритм делит последовательность в среднем случае пополам, в худшем сначала сохраняется большая часть, затем меньшая). Так же для хра-нения координат точек в стеке требуется два массива на D элементов. В итоге необходимый объем памяти составляет: O((M+N)lgS+(M+N)lg(M+N)), где
(M+N)lgS – объем, необходимый для хранения последовательностей, (M+N) – длинны по-следовательностей, lgS – байты необходимые для хранения символа
(M+N)lg(M+N) – объем, необходимый для хранения координат точек, (M+N) – общее ко-личество точек в худшем случае, lg(M+N) – байты необходимые для хранения координат симво-лов.
На рис.3 представлены две последовательности, разбитые алгоритмом.



Замечания:
Приведенные выше алгоритмы достаточно широко используются для решения разнооб-разных задач. Но ни один из приведенных алгоритмов не является универсальным для различ-ных последовательностей (кстати, элементами последовательности могут быть не только симво-лы, но и слова, а также в роли последовательности может выступать массив чисел или состоя-ний). Поэтому при решении задач следует комбинировать алгоритмы в зависимости от резуль-тата и входных данных задачи.
В случае если набор входных данных неизвестен или вы уверены, что около 30 – 50 % символов совпадут, то лучше всего воспользоваться квадратичным алгоритмом. В этом случае он будет оптимальным алгоритмом по времени.
Если вам известно, что последовательности слишком большие, для хранения их в двумер-ном массиве, то для решения задачи придется пожертвовать временем (существуют измененный алгоритм Нудельмана-Вунша, работающий за большее время, но с линейным объемом – обра-щаться к автору статьи).
Алгоритм 2.б хорошо подходит для последовательностей любой длинны, но при условии, что две последовательности достаточно сильно совпадают (он использовался для нахождения мутации генов ДНК длинной более 200 000 элементов, но различия между двумя последова-тельностями не превышали 15 %), в противоположном случае (совпадений менее 70 % ), на по-следовательностях большой длины, алгоритм существенно замедляется.
Для подобного случая хорошо подходит другой алгоритм Hunt’а и Szimansk’ого[3], кото-рый хорошо работает на последовательностях различающихся друг от друга или последователь-ностях, алфавит которых достаточно широк.
Список литературы:
1. Eugene M., An O(ND) Difference Algorithm and its Variations, www.algolist.manual.ru
2. Окулов С.М. Программирование в алгоритмах. М.: БИНОМ. Лаборатория знаний, 2002.
3. Алгоритм Ханта-Шиманского. www.algolist.manual.ru/Поиск/Общие подпоследова-тельности. Дистанция/ Алгоритм Ханта-Шиманского

ПСИХОЛИНГВИСТИЧЕСКОЕ ИССЛЕДОВАНИЕ ГЕНДЕРНЫХ АСПЕКТОВ ЯЗЫКА

ПСИХОЛИНГВИСТИЧЕСКОЕ ИССЛЕДОВАНИЕ
ГЕНДЕРНЫХ АСПЕКТОВ ЯЗЫКА
В статье высказывается предположение, что гендерный компонент является неотъемлемой частью структуры слова. В ходе анализа результатов психолингвистического эксперимента были выделены основные модели понимания существительных с ярко выраженным гендерным компонентом.

Гендерология – новая, бурно развивающаяся отрасль гуманитарного знания. Ученые изучают психологические основы гендерологии, её влияние на человеческую культуру. Гендером начинают интересоваться и лингвисты, так как в языке отражаются все психологические и культурные процессы, при этом отображение человека в языке происходит двояко, поскольку «человек представлен в двух ипостасях – мужчина и женщина» [4, 121].Основная задача гендерной лингвистики заключается в изучении мужского и женского языка, а также особенностей языкового поведения мужчины и женщины. Как указывает Е.И. Горошко, при изучении проблемы взаимоотношения языка и гендера, можно выделить три подхода [1, 109].
1. Первый подход сводится к трактовке исключительно социальной природы языка женщин и мужчин. В рамках этого подхода выявляются семантические различия мужского и женского языка объясняются перераспределением социальной власти в обществе.
2. В рамках второго подхода «мужской» и «женский» языки, рассматриваются особенности языкового поведения представителей обоих полов. Среди методов исследования данного подхода выделяются определение статистических показателей, средних параметров.
3. Третий подход делает упор на когнитивном аспекте различий мужского и женского речевых рисунков.
Представляется, что второй и третий подходы к проблеме взаимодействия гендера и языка, выделенные Е.И. Горошко, можно объединить в единый подход, поскольку оперирование статистическими данными отнюдь не исключает объяснение нестандартных, нетипичных явлений. Более того, когнитивная научная парадигма обладает большой объяснительной силой при изучении специфики ментального лексикона. В фокусе внимания современных исследований лексикона находится концепт, представляющий собой «спонтанно функционирующее в речемыслительной деятельности индивида базовое перцептивно-когнитивно-аффективное образование динамического характера, отличающееся от понятий и значений по ряду параметров» [1, с. 16].
Принято считать, что концепт представляет собой совокупность разнообразных вербальных и невербальных компонентов. Рассматривая структуру концепта, Е.В. Лукашевич выделяют следующие компоненты: понятие, представление, эмоция и оценка, предметное содержание и ассоциативные связи [3]. Нам представляется, что указанные компоненты не исчерпывают структуру концепта. Предложенная А.А. Залевской концепция внутреннего лексикона человека исходит из множественности и разнообразия принципов его организации: основаниями для связи между его единицами могут служить признаки и признаки признаков по любому из направлений переработки разнообразной информации [2]. Можно предположить, что гендер следует рассматривать как одну из составляющих как структуры концепта , так и структуры значения слова.
Объектом нашего психолингвистического исследования послужили английские слова с ярко-выраженным гендерным компонентом в значении. Целью экспериментального исследования было выявление специфики образов языкового сознания испытуемых, изучающих английский язык, и через полученные ассоциативные поля выделить основные стратегии понимания данных слов-стимулов. Мы предположили, что гендерный компонент найдет свое проявление как в ассоциативных полях, так и в моделях идентификации исследуемых слов.
В экспериментальный список вошли слова, отражающие возрастные характеристики мужчин и женщин (BOY (здесь и далее прописными буквами обозначаем экспериментальный стимул, строчными – слово-реакцию), GIRL, TEENAGER, MAN, WOMAN), семейный статус (FATHER, GRANDFATHER, GRANDMOTHER, MOTHER), профессиональную деятельность (HEADMASTER, HEADMISTRESS), имеющие стилистическую окраску (GENTLEMAN, LADY, MAIDEN).
Испытуемым предлагалось записать первые 3 пришедших в голову ассоциации к предложенным словам. Слова-стимулы предъявлялись испытуемым в письменном виде, а инструкция зачитывалась устно. Теоретически в результате проведённого эксперимента мы могли бы получить 1323 реакции на слова-стимулы. Однако на некоторые слова со стороны испытуемых были приведены одна или две реакции вместо трех, отказов же от реакций на предлагаемые слова не было. Таким образом, в ходе ассоциативного эксперимента было получено 586 реакций.
Наибольшую трудность у испытуемых вызвали такие слова-стимулы, как HEADMISTRESS (25); HEADMASTER, GENTLEMAN (27); MAIDEN (30); LADY (35). Можно предположить, что сложность ассоциирования связана с тем, что слова-стимулы неизвестны испытуемым (HEADMISTRESS, HEADMASTER, MAIDEN), а также с тем, что некоторые слова не свойственны для русской культуры. Примером таких слов могут служить слова GENTLEMAN и LADY, чисто английские реалии.
Что же касается слов, к которым все испытуемые написали по три реакции, то таких слов только два: MOTHER и TEENAGER. Причинами этого может быть то, что мать является самым близким для любого человека, а подростками испытуемые сами были совсем недавно.
В ходе структурного анализа мы проанализировали ассоциативные поля исследуемых слов-стимулов, среди слов реакций были выделены отдельные слова (134) и словосочетания (18). Среди словосочетаний можно выделить 4 модели:
1) adjective + noun: bad marks, English woman, harmful habits, old age, small machines;
2) noun + noun: baby's dummy, business lady, ladies' saint, lady Diana, snot nose;
3) noun + preposition + noun: care of the child, example for an imitation, head of the family, prosperity of the family;
4) verbal + noun: swaddling clothes.
Большинство реакций-словосочетаний было получены на слова-стимулы BOY, FATHER, MOTHER (по 3 реакции-словосочетания). Также следует отметить, что большинство реакций-словосочетаний относится к детям (baby's dummy, bad marks, care of the child, small machines, snot nose, swaddling clothes).
Группа реакций-слов намного больше, в нее вошли 134 (103 различных) слова. Причем среди них 100 (75 различных) существительных, 31 (26) прилагательных и 3 (2) глагольные формы.
Если рассматривать полученные реакции-прилагательные по способу образованию, то мы можем найти все три вида прилагательных: простые (kind, small, strong), производные (beautiful, trustful) и сложные (well-bred). Все производные прилагательные образованы путём прибавления к основе слов (в основном существительных) суффикса. Количество простых прилагательных – 18, производных – 6, составных – 2.
Большинство прилагательных имеют нейтральную коннотацию (adult, strong, young) или позитивную (elegant, kind, polite) коннотацию и только 3 прилагательных (fidgety, selfish, wild) имеют негативную окраску.
Далее рассмотрим реакции-существительные, которые чаще всего встречаются в реакциях испытуемых. Следует отметить, что среди 75 различных существительных можно выделить абстрактные (beauty, fidelity, youth) и конкретные (armchair, cane, spectacles). Количество абстрактных существительных – 25, а конкретных – 50.
Если классифицировать существительные по способу образования, то можно выделить 54 простых существительных (age, beer, skirt), 11 производных (kindness, motherhood, player), 9 составных (housewife, pancake, schoolgirl) и 1 сокращение (TV).
Рассматривая имена существительные с позиции их стилистической окраски, можно выделить 58 существительных с нейтральной (bag, car, milk), 9 – с положительной (firewood, kindness, wisdom) и 8 – с негативной коннотацией (alcohol, drag, impudence).
Мы подробно рассмотрели ассоциативные поля каждого слова-стимула. Приведем примеры анализа. Так, к слову GIRL было приведено 11 ассоциаций: child, school, bows, dolls, childhood, cosmetics, small, beautiful, trustful, schoolgirl, skirt. У всех слов позитивная или нейтральная коннотация. Идентифицируя слово GIRL, акцент делали, прежде всего, на юный возраст, что подтверждают такие ассоциации, как bows, child, childhood, dolls, small. Также обращали внимание на школьный статус (school, schoolgirl), внутренние качества (trustful), внешние данные и одежду (beautiful, skirt).
Слово BOY ассоциируется с shorts, fidgety, scuffles, child, school, small machines, bad marks, small, snot nose, wild. Отметим, что испытуемые оказались более критичны к мальчикам. Так, если при оценке девочек все слова имели позитивную или нейтральную коннотацию, то среди реакций к слову-стимулу BOY есть слова с негативной окраской. Это такие реакции, как bad marks, fidgety, scuffles, wild. Также как и в предыдущем случае, делается акцент на возраст (child, school, small, small machines, snot nose). Что же касается одежды мальчиков, то она ассоциируется, прежде всего, с shorts.
Таким образом, при сопоставлении пары слов-стимулов GIRL – BOY мы видим, что отношение к девочкам у испытуемых более положительное, чем к мальчикам. Кроме того, мы можем предположить, что слова GIRL и BOY ассоциируются прежде всего с детьми младшего школьного возраста.
Следующая пара слов-стимулов TEENAGER – MAIDEN характеризуют более старшую возрастную группу. Анализ экспериментальных данных показывает, что характеристика возрастного периода от тринадцати до девятнадцати лет имеет ярко выраженную негативную окраску. Данный возрастной период характеризуется словами disco, drug, player, jeans, young, impudence, daredevil, alcohol, harmful habits, music и половина из перечисленных слов имеет негативную коннотацию (alcohol, daredevil, drug, harmful habits, impudence). По данным эксперимента основное увлечение подростков – музыка (disco, music, player).
Главным этапом нашего анализа было выделение основных моделей идентификации слов полученного ассоциатиного поля, посредством которых осуществляется соотнесение слова стимула с тем или иным фрагментом ментального лексикона человека, и, в конечном итоге, понимание слова. Мы выделили 8 основных стратегий идентификации.
1. Идентификации через указание на возраст: BOY – child; GIRL – childhood; MAN – adult; GRANDMOTHER – old age.
2. Идентификации через роли, занимаемые человеком в семье: FATHER – head of the family; WOMAN – housewife; WOMAN – wife.
3. Идентификации через основные занятия: BOY – school; GIRL – schoolgirl; FATHER – work; GRANDFATHER – firewood; GRANDMOTHER – knitting.
4. Идентификации через одежду: BOY – shorts; GENTLEMAN – tie; LADY – jacket; MAN – suit.
5. Идентификации через конкретный предмет, характерный для данного слова-стимула: BOY – small machines; FATHER – car; GENTLEMAN – flowers; GIRL – dolls; GRANDFATHER – cane; GRANDMOTHER – spectacles; TEENAGER – player; WOMAN – bag.
6. Идентификации через внешние данные: GENTLEMAN – tidy; LADY – elegant; MAIDEN – beauty; MAN – muscular.
7. Идентификации через внутренние качества: BOY – fidgety; GENTLEMAN – polite; GRANDFATHER – grumbler; HEADMASTER – strictness; HEADMISTRESS – responsibility; MAN – courage.
8. Идентификации через эмоциональную оценку: BOY – snot nose; BOY – wild; TEENAGER – daredevil.
Необходимы дальнейшие исследования гендерного компонента в структуре значения слова. Представляется целесообразным определить его роль, место и специфику, а также особенности его взаимодействия с другими компонентами структуры значения.

ЛИТЕРАТУРА

1. Горошко Е.И. Пол, гендер, язык // Женщина, гендер, культура. М., 1999.– С. 98-112.
2. Залевская А.А. Концепт как достояние индивида // Психолингвисти-ческие исследования слова и текста. Тверь, 2002. С.5-18.
3. Лукашевич Е.В. Когнитивная семантика: эволюционно-прогностический аспект. М.; Барнаул: Изд-во Алт. ун-та, 2002. 234 с.
4. Маслова В.А. Лингвокультурология. – М.: Academia, 2001. 208 с.




Усталости легко перерасти в хроническую и подорвать здоровье вашего ребенка Поэтому отдыхайте

Все для татуировки, тату студии, прокол пупка - покажите свою индивидуальность всему миру!

Легенда нашего шансона - Михаил Шуфутинский, такого о нем вы никогда не слышали.

О задаче нахождения максимально-независимых множеств графа

О задаче нахождения максимально-независимых
множеств графа

Теория: Дан неориентированный граф G=(V,E). Независимое множество вершин есть множество вершин графа G, такое, что любые две вершины в нем не смежны, т.е. никакая пара вершин не соединена ребром.

Независимое множество называется максимальным, когда нет другого независимого множества, в которое оно бы входило.

У максимально-независимого множества графа есть такое свойство:

S – максимально-независимое множество графа G

U – множество вершин, смежных с вершинами множества S

G=S+U

Отсюда следует и метод решения задачи нахождения максимально-назависимых множеств (МНМ), то есть находится такое множество несмежных вершин графа, которое в совокупности со своими смежными вершинами образует граф. Основной идеей сокращения перебора является последовательное расширение независимого множества. Если его нельзя будет расширить, то это множество и есть максимально- независимое.

В работе [1] приведена следующая логика решения данной задачи:

Переменные:

Type Sset=set of 1..N;

a:Array[1..N] of set of 1..N; i-ый элемент массива множество вершин, смежных с вершиной i.[1]

Ss – массив решения. Решением являются первые k элементов

k – переменная, указывающая на порядковый номер вершины, которую мы хотим включить в решение

qp – множество вершин, которые еще не были рассмотрены в процессе перебора

qm - множество вершин, которые уже были просмотрены в процессе перебора

Gg – множество кандидатов на расширение текущего независимого множества.

Опишем логику вывода решения из массива Ss:

Procedure Print(k:byte);

Var i:integer;

Begin

Writeln;

For i:=1 to k do write(Ss[i]:2);

End;

Для решения нам понадобится функция подсчета количества элементов в множестве.

function number(a:sset):byte;

var i,cnt:byte;

begin

cnt:=0;

for i:=1 to n do if i in A then inc(cnt);

number:=cnt;

end;

{основная процедура решения задачи}

Procedure FIND (k:integer; qp,qm:sset);

var i,delt,j:byte;

gg:sset;

begin

if (qp<>[]) or (qm<>[]) then begin

{форомирование множества Gg}

if qm<>[] then begin

delt:=n+1;

for j:=1 to n do

if j in qm then

АА

if number(a[j]*qp)

i:=j;

delt:=number(a[j]*qp);

end;

gg:=qp*a[i];

end

else gg:=qp;

{поиск следующей вершины}

i:=1;

while i<=n do begin

if i in gg then begin

ss[k]:=i;

find(k+1,qp-a[i]-[i],qm-a[i]-[i]);

qp:=qp-[i];

Б

qm:=qm+[i];

if number(qp*a[i])

then gg:=qp*a[i];

end;

inc(i);

end;

end else print(k);

end;

Но в вышеуказанной книге приведен пример, который не в полной мере раскрывает необходимость использования блоков АА и Б, а также целесообразность введения множества Qm. Поэтому попытаемся привести новый пример и уточнить вышеуказанные моменты методом трассировки.

Рассмотрим граф на рисунке 1. Матрица A для него будет выглядеть следующим образом:

A[1]=[2,5,10]

A[2]=[1,3,9,10]

A[3]=[2,4,7..9]

A[4]=[3,5..7]

A[5]=[1,4,6]

A[6]=[4,5,7]

A[7]=[3,4,6,8,9]

A[8]=[3,7,9]

A[9]=[2,3,7,8,10]

A[10]=[1,2,9]


Используем метод трассировки.

K

Qp

Qm

Gg

Ss

Примечания

1

1

[1..10]

[]

[1..10]

(1)

Вбираем первую вершину

2

2

[3,4,6..9]

[]

[3,4,6..9]

(1,3)

Включаем вершину 3

3

3

[6]

[]

[6]

(1,3,6)

Включаем вершину 6

4

4

[]

[]

[]

(1,3,6)

Вывод первого мн-ва и выход в предыдущую копию процедуры FIND

5

3

[]

[6]

[]

(1,3,6)

Выход в предыдущую копию Find

6

2

[4,6..9]

[3]

[4,7..9]

(1,4)

Исключаем вершину 3 из Ss и включаем ее в Qm. Продолжает работу цикл while. Он включает следующую вершину – 4.

7

3

[8,9]

[]

[8,9]

(1,4,8)

Вывод второго МНМ

8

3

[9]

[8]

[9]

(1,4,9)

Вывод третьего МНМ и выход в предыдущую копию Find

9

2

[6..9]

[3,4]

[6,7]

(1,6)

10

3

[8,9]

[3]

[]

(1,6)

Первое использование блока AA. Этот блок используется для сокращения перебора. Он формирует множество Gg как пересечение множеств Qp и A[j], где j из Qm. Причем мощность множеств минимальна.

3

[8,9]

[3]

[8,9]

(1,6)

В итоге формирования I приняло значение 3

3

[8,9]

[3]

[8,9]

(1,6,8)

11

4

[]

[]

[]

(1,6,8)

Вывод МНМ

12

3

[9]

[3,8]

[9]

(1,6,9)

13

4

[]

[]

[]

(1,6,9)

Вывод МНМ

14

2

[7..9]

[3,4,6]

[7]

(1,7)

15

3

[]

[]

[]

(1,7)

Вывод МНМ

16

1

[2..10]

[1]

[2,5,10]

(2)

17

2

[4..8]

[]

[4..8]

(2,4)

18

3

[8]

[]

[8]

(2,4,8)

19

4

[]

[]

[]

(2,4,8)

Вывод МНМ

20

2

[5..8]

[4]

[5..7]

(2,5)

21

3

[7..8]

[]

[7..8]

(2,5,7)

22

4

[]

[]

[]

(2,5,7)

Вывод МНМ

23

3

[8]

[7]

[8]

(2,5,8)

24

4

[]

[]

[]

(2,5,8)

Вывод МНМ

25

2

[6..8]

[4,5]

[6]

(2,6)

26

3

[8]

[]

[8]

(2,6,8)

27

4

[]

[]

[]

(2,6,8)

Вывод МНМ

28

1

[3..10]

[1,2]

[2,5,10]

(5)

29

2

[3,7..10]

[2]

[3,9,10]

(5)

Вновь включается в работу блок AA. Qm состоит из1го элемента – 2, поэтому он и будет выбран как минимальный.

2

[3,7..10]

[2]

[3,9,10]

(5,3)

30

3

[10]

[]

[10]

(5,3,10)

31

4

[]

[]

[]

(5,3,10)

Вывод МНМ

32

2

[7..10]

[2,3]

[3,9,10]

(5,9)

33

3

[]

[]

[]

(5,9)

Вывод МНМ

34

2

[7,8,10]

[2,3,9]

[3,9,10]

(5,10)

35

3

[7,8]

[3]

[]

(5,10)

Вновь срабатывает ящик AA.

3

[7,8]

[3]

[7,8]

(5,10)

Gg изменится после выбора как минимального множества пересечения Qp и А[3].

3

[7,8]

[3]

[7,8]

(5,10,7)

36

4

[]

[]

[]

(5,10,7)

Вывод МНМ

37

3

[8]

[3,7]

[8]

(5,10,8)

…Вывод МНМ

38

1

[3,4,6..10]

[1,2,5]

[4,6]

(6)

39

2

[3,8..10]

[1,2]

[]

(6)

Вновь срабатывает блок AA. Множество ранее просмотренных состоит из двух элементов. Из них, для сокращения перебора, выбирается число при котором пересечение Qp и множества вершин смежных данной наименьшее. Это 1.

2

[3,8..10]

[1,2]

[10]

(6)

Множество Gg преобразовалось.

2

[3,8..10]

[1,2]

[10]

(6,10)

40

4

[]

[]

[]

(6,10,3)

Вывод МНМ

41

4

[]

[]

[]

(6,10,8)

Вывод последнего МНМ и выход из процедуры

Примечание! В блоках АА и Б выбирается минимальное по мощности множество, т.к., выполняя такой шаг, мы каждый раз, сокращая множество Gg сокращаем количество итераций в рассмотрении, а значит и сокращаем перебор.

Литература

1. Окулов С.М. Конспекты занятий по информатике (алгоритмы на графах). Киров, 1996.



[1] Данный метод описания графа используется, т.к. нам часто придется рассматривать вершины, смежные с данной.



Домініко Дольче. А Лил Вейн стал мужем аж двух девушек.

Наши машины и все что нужно знать об их эксплуатации

Блог про фiнансову кризу у свiтi. А вы знаете, что такое рецессия экономики??