saved before topic change
This commit is contained in:
@@ -8,7 +8,7 @@ import numpy as np
|
||||
|
||||
|
||||
# Initial Setup
|
||||
csv_file = "results/synthetic_data/raw/20260418_095837.csv"
|
||||
csv_file = "results/synthetic_data/raw/20260421_031740.csv"
|
||||
save_folder = f"results/synthetic_data/derived/{os.path.splitext(os.path.basename(csv_file))[0]}/call_number_analysis"
|
||||
os.makedirs(save_folder, exist_ok=True)
|
||||
|
||||
@@ -45,10 +45,8 @@ def E_vs_relax_attempts(df):
|
||||
|
||||
print(f"Saved E vs relax_attempts plots to {save_folder}")
|
||||
|
||||
# E_vs_relax_attempts(df)
|
||||
|
||||
|
||||
# sigma vs relax_success_ratio
|
||||
# 2. sigma vs relax_success_ratio
|
||||
def sigma_vs_relax_success_ratio(df):
|
||||
rows = []
|
||||
sigma_save_folder = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled")
|
||||
@@ -114,10 +112,8 @@ def sigma_vs_relax_success_ratio(df):
|
||||
res.to_csv(os.path.join(sigma_save_folder, "r2.csv"))
|
||||
print(f"Saved controlled sigma vs relax_success_ratio plots to {sigma_save_folder}")
|
||||
|
||||
# sigma_vs_relax_success_ratio(df)
|
||||
|
||||
|
||||
# avg_degree vs relax_success_ratio
|
||||
# 3. avg_degree vs relax_success_ratio
|
||||
def avg_degree_vs_relax_success_ratio(df):
|
||||
avgdeg_scatter_folder = os.path.join(save_folder, "avg_deg_vs_ratio_controlled")
|
||||
os.makedirs(avgdeg_scatter_folder, exist_ok=True)
|
||||
@@ -144,11 +140,9 @@ def avg_degree_vs_relax_success_ratio(df):
|
||||
|
||||
print(f"Saved avg_degree vs ratio plots to {avgdeg_scatter_folder}")
|
||||
|
||||
# avg_degree_vs_relax_success_ratio(df)
|
||||
|
||||
|
||||
# log_avg_degree vs log_ratio
|
||||
def log_avg_degree_vs_log_ratio():
|
||||
# 4. log_avg_degree vs log_ratio
|
||||
def log_avg_degree_vs_log_ratio(df):
|
||||
CEILING = 1
|
||||
avgdeg_loglog_folder = os.path.join(save_folder, "avgdeg_vs_ratio_loglog")
|
||||
os.makedirs(avgdeg_loglog_folder, exist_ok=True)
|
||||
@@ -227,10 +221,9 @@ def log_avg_degree_vs_log_ratio():
|
||||
|
||||
print(f"Saved avg_degree vs ratio log-log plots to {avgdeg_loglog_folder}")
|
||||
|
||||
# log_avg_degree_vs_log_ratio()
|
||||
|
||||
|
||||
def regime_distribution():
|
||||
# 5. sigma vs. relax_success_ratio in controlled node,density
|
||||
def regime_distribution(df):
|
||||
r2_csv = os.path.join(save_folder, "sigma_vs_relax_ratio_controlled", "r2.csv")
|
||||
res = pd.read_csv(r2_csv)
|
||||
|
||||
@@ -297,10 +290,8 @@ def regime_distribution():
|
||||
|
||||
print(f"Saved regime distribution plots to {regime_save_folder}")
|
||||
|
||||
# regime_distribution()
|
||||
|
||||
|
||||
# Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
|
||||
# 6. Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
|
||||
def nonlinear_regression(df):
|
||||
# Filter: giant component regime only
|
||||
sub = df[(df["avg_degree"] >= 1) & (df["relax_success_ratio"] < 0.99)].copy()
|
||||
@@ -368,4 +359,10 @@ def nonlinear_regression(df):
|
||||
|
||||
print(f"Saved nonlinear regression plots to {nlr_save_folder}")
|
||||
|
||||
nonlinear_regression(df)
|
||||
|
||||
E_vs_relax_attempts(df) # 1
|
||||
sigma_vs_relax_success_ratio(df) # 2
|
||||
avg_degree_vs_relax_success_ratio(df) # 3
|
||||
log_avg_degree_vs_log_ratio(df) # 4
|
||||
regime_distribution(df) # 5
|
||||
nonlinear_regression(df) # 6
|
||||
@@ -28,7 +28,7 @@ from sklearn.metrics import r2_score
|
||||
# k3: cost per relax_attempt (should be equal across heaps)
|
||||
# k4: cost per decrease-key (binary: should scale with log2N; fibonacci: should be constant)
|
||||
|
||||
csv_file = "results/synthetic_data/raw/20260418_095837.csv"
|
||||
csv_file = "results/synthetic_data/raw/20260421_031740.csv"
|
||||
save_folder = f"results/synthetic_data/derived/{os.path.splitext(os.path.basename(csv_file))[0]}/processing_time_analysis"
|
||||
os.makedirs(save_folder, exist_ok=True)
|
||||
|
||||
@@ -85,6 +85,10 @@ log_n = np.log2(np.array(nodes)).reshape(-1, 1)
|
||||
bin_reg = LinearRegression().fit(log_n, k4_bin)
|
||||
r2_bin = r2_score(k4_bin, bin_reg.predict(log_n))
|
||||
|
||||
# fibonacci: k4 ~ log₂N 회귀
|
||||
fib_reg = LinearRegression().fit(log_n, k4_fib)
|
||||
r2_fib = r2_score(k4_fib, fib_reg.predict(log_n))
|
||||
|
||||
n_line = np.linspace(min(nodes), max(nodes), 300)
|
||||
log_n_line = np.log2(n_line).reshape(-1, 1)
|
||||
|
||||
@@ -96,6 +100,8 @@ ax.plot(nodes, k4_bin, marker="o", color="steelblue", label="binary k4")
|
||||
ax.plot(nodes, k4_fib, marker="s", color="darkorange", label="fibonacci k4")
|
||||
ax.plot(n_line, bin_reg.predict(log_n_line), color="steelblue", linestyle="--", linewidth=1.5,
|
||||
label=f"binary fit (∝ log₂N) R²={r2_bin:.3f}")
|
||||
ax.plot(n_line, fib_reg.predict(log_n_line), color="steelblue", linestyle="--", linewidth=1.5,
|
||||
label=f"fibonacci fit (∝ log₂N) R²={r2_fib:.3f}")
|
||||
ax.set_xlabel("N (nodes)")
|
||||
ax.set_ylabel("k4 — decrease-key cost per call [s]")
|
||||
ax.set_title("k4 (decrease-key unit cost) vs N")
|
||||
|
||||
Reference in New Issue
Block a user