То, как определить и проанализировать подобные шаблоны как Excel, делает?

Постоянное Поколение. Посмотрите, что java GC настраивает руководство для получения дополнительной информации о сборщике "мусора".

6
задан dr. evil 7 September 2009 в 13:13
поделиться

4 ответа

Как только вы начнете задумываться о поиске динамических частей паттернов формы: .... без каких-либо других предположений вам нужно будет найти самую длинную общую подпоследовательность из предоставленных вами образцов строк. Например, если у меня есть test-123-abc и test-48953-defg , то LCS будет test- и - . Тогда динамические части будут промежутками между результатом LCS. Затем вы можете найти свою динамическую часть в соответствующей структуре данных.

Проблема поиска LCS из более чем двух строк очень дорога, и это будет узким местом вашей проблемы. Ценой точности вы можете решить эту проблему. Например, вы можете выполнить LCS между всеми парами строк и сгруппировать наборы строк с аналогичными результатами LCS. Однако это означает, что некоторые шаблоны не будут правильно идентифицированы.

Конечно, всего этого можно избежать, если вы можете наложить дополнительные ограничения на свои строки, как это делает Excel, который, кажется, допускает только шаблоны формы < const> .

2
ответ дан 17 December 2019 в 20:33
поделиться

Документы Google могут быть лучше, чем Excel для такого рода вещей, хотите верьте, хотите нет.

Google собрал огромное количество данных по наборам - например, в примере, который вы ему дали распознал бы синий, красный, желтый ... как часть набора «цветов». Он имеет гораздо более полное распознавание образов, чем Excel, поэтому у него будет больше шансов продолжить образ.

0
ответ дан 17 December 2019 в 20:33
поделиться

найти [динамический] - это не так уж важно, вы можете сделать это с помощью двух строк - просто начните с начала и остановитесь, когда они начнут не быть равными, сделайте то же самое с конца , и вуаля - вы получили [динамический]

что-то вроде (псевдокод - вроде):

String s1 = 'asdf-1-jkl';
String s2= 'asdf-2-jkl';
int s1I = 0, s2I = 0;
String dyn1, dyn2;
for (;s1I<s1.length()&&s2I<s2.length();s1I++,s2I++)
  if (s1.charAt(s1I) != s2.charAt(s2I))
    break;
int s1E = s1.length(), s2E = s2.length;
for (;s2E>0&&s1E>0;s1E--,s2E--)
  if (s1.charAt(s1E) != s2.charAt(s2E))
    break;
dyn1 = s1.substring(s1I, s1E);
dyn2 = s2.substring(s2I, s2E);

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

0
ответ дан 17 December 2019 в 20:33
поделиться

Цитата Дзен Python ,

Явное лучше, чем неявное.

0
ответ дан 17 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

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