Вычисление чисел “Kevin Bacon”

Вам необходимо задать подкадр данных, включив в него только те столбцы, которые вы хотите построить:

import pandas as pd
import numpy as np; np.random.seed(0)
import matplotlib.pyplot as plt
import seaborn as sns
import cufflinks as cf

# Generate sample data
df = cf.datagen.lines(5)
df.columns = ['Máximo', 'Média', 'Mínimo', 'Amplitude', 'Desvio Padrão']
df = df.reset_index(drop=True)

def plotGraph(title, z):
    sns.set()
    fig, ax = plt.subplots(2,1)
    fig.suptitle(title)
    sns.lineplot(data=z[['Máximo', 'Média', 'Mínimo']], hue=['Máximo', 'Média', 'Mínimo'], ax=ax[0])
    sns.lineplot(data=z[['Amplitude', 'Desvio Padrão']], hue=['Amplitude', 'Desvio Padrão'], ax=ax[1])
    fig.tight_layout(rect=[0, 0.03, 1, 0.95])
    plt.show()

plotGraph('Plot Title', df)

Plot

11
задан Deduplicator 21 May 2015 в 11:50
поделиться

4 ответа

Это - стандартная проблема кратчайшего пути. Существует много решений, включая алгоритм Dijkstra и Форд Беллмана. Можно особенно интересоваться взглядом на* алгоритм и наблюдение, как это работало бы с функцией стоимости относительно инверсии градуса какого-то конкретного узла. Идея состояла бы в том, чтобы посетить более популярные узлы (те, которые имеют более высокий градус), сначала.

17
ответ дан 3 December 2019 в 05:36
поделиться

Походит на задание для алгоритма Dijkstra.

ED: А, я не должен был нажимать на курок настолько быстро. Dijkstra (и Форд Беллмана) уменьшает до поиска в ширину, когда веса равняются 1, таким образом, это не слишком полезно. О, хорошо.

* алгоритм, упомянутый tvanfosson, может быть идеальным для этого. Идея состоит в том, что вместо того, чтобы искать и рекурсивно вызвать в любом порядке элементы находятся на каждом уровне дерева (базировался на Вашем запуске - или конечная точка), Вы используете некоторую эвристику для определения, какой элемент Вы собираетесь попробовать сначала. В Вашем случае хорошая ставка, вероятно, была бы степенью узла (число "друзей"), но Вы могли возможно хотеть использовать число людей в некотором произвольном числе степеней данного человека (т.е. парень, который имеет, имеет трех друзей, которые у каждого есть 100 друзей, вероятно, будет лучший узел, чем парень, у которого есть 20 друзей в клике, которая избегает посторонних). Существуют все виды других вещей, которые Вы могли использовать в качестве эвристики (друзья понимают 2 мысли, друзья друзей понимают 1 мысль; безотносительно, эксперимент).

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

4
ответ дан 3 December 2019 в 05:36
поделиться

Этот мог бы быть лучшим полным Floyd-Warshall все кратчайшее расстояние пар.

0
ответ дан 3 December 2019 в 05:36
поделиться

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

0
ответ дан 3 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

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