Эффективный способ рекурсивно вычислить дерево доминатора?

Я знаю, что это старый поток, но если вы просто возвращаете значение Id в массиве, возможно, вам придется выбрать этот синтаксис. Поскольку мне не показалось, что значение indexOf соответствует формату Mongo ObjectId.

  obj.map = function() {
    for(var i = 0; i < inputs.length; i++){
      if(this._id.equals(inputs[i])) {
        var order = i;
      }
    }
    emit(order, {doc: this});
  };

Как преобразовать mongo ObjectId .toString без включения 'ObjectId ()' wrapper - только значение?

16
задан jfs 31 October 2008 в 08:59
поделиться

4 ответа

5
ответ дан 30 November 2019 в 23:21
поделиться

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

Моя первая мысль - то, что, если бы этот график сгенерирован другими компиляторами, стоило бы смотреть на компилятор с открытым исходным кодом, как GCC, видеть, как это решает эту проблему?

Мое долгое размышление - то, что, основной момент Вашего вопроса, кажется, старается не повторно вычислять результат для корня дерева.

то, Что я сделал бы, создают обертку вокруг каждого узла, который содержит сам узел и любые предварительно вычисленные данные, связанные с тем узлом. Новое дерево было бы затем восстановлено от старого дерева рекурсивно с помощью этих классов обертки. Поскольку Вы создаете это дерево, Вы запустили бы в корне и работе свой выход к вершинам. Для каждого узла Вы сохранили бы результат вычисления для всего ancestory к настоящему времени. Тем путем Вам придется только когда-либо смотреть на родительский узел и текущие данные узла, которые Вы обрабатываете для вычислений значения для нового узла.

я надеюсь, что это помогает!

2
ответ дан 30 November 2019 в 23:21
поделиться

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

1
ответ дан 30 November 2019 в 23:21
поделиться

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

можно просто искать "дерево доминатора инкрементных обновлений" для нахождения некоторых ссылок.

я предполагаю, что Вы знающие Память Eclipse, Анализатор действительно использует деревья доминатора, таким образом, эта тема не полностью больше "принадлежит" сообществу компилятора :)

0
ответ дан 30 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

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