Как удалить дубликаты ребер по inV outV и конкретным свойствам?

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

Некоторые могут сказать, что это случай предпочтения, но я считаю логический поток программы намного легче следовать, если он внутренне согласован , и я не считаю, что он согласен написать один оператор IF, как это:

if(x < y)
    x = y;
else
    y = x;

И еще один такой:

if(x < y)
{
    x = y;
    x++;
}
else
{
    y = x;
    y++;
}

Я предпочитаю просто выбрать один общий стиль и придерживаться его:)

1
задан Vasar 1 April 2019 в 08:27
поделиться

1 ответ

Я думаю, что характер ваших критериев удаления (в частности, то, что вы просто хотите немедленно drop() дубликаты, с которыми вы сталкиваетесь) позволяет нам использовать модификацию шаблона обнаружения дублирующих краев , описанного в Гремлин Рецепты.

gremlin> g.V().as('ov').
......1>   outE().as('e').
......2>   inV().as('iv').
......3>   sideEffect(inE().
......4>              where(neq('e')).
......5>              where(eq('e')).by(label).
......6>              where(outV().as('ov')).
......7>              where(eq('e')).by('prop1').drop()).iterate()
gremlin> g.E()
==>e[0][1-link->2]
==>e[3][2-link->3]
==>e[7][2-link->3]
==>e[8][3-link->4]

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

Единственное, что может быть хитрым, это то, что конкретный граф, который вы используете, особенно стремится оценить шаги обхода. Другими словами, если вы drop() ребро, оно сразу удаляется из будущей итерации в строках 1 и 3? Если нет, это может означать некоторые проблемы. Однако большинство графиков работают, как показано ниже (я тестировал на TinkerGraph), поэтому, возможно, этот подход подойдет вам.

0
ответ дан stephen mallette 1 April 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: