def spanning_forest(count, edges):
if type(count) is not int or not 0 <= count <= 64 or type(edges) is not list or len(edges) > 1024:
raise ValueError("forest.input")
ordered = []
for edge in edges:
if type(edge) not in (list, tuple) or len(edge) != 3 or any(type(x) is not int for x in edge):
raise ValueError("forest.edge")
a, b, weight = edge
if not 0 <= a < count or not 0 <= b < count or abs(weight) > 10**9:
raise ValueError("forest.bounds")
ordered.append((weight, min(a, b), max(a, b)))
parent = list(range(count))
def root(node):
while parent[node] != node:
parent[node] = parent[parent[node]]
node = parent[node]
return node
selected, total = [], 0
for weight, a, b in sorted(ordered):
x, y = root(a), root(b)
if x != y:
parent[x] = y
selected.append((a, b, weight))
total += weight
return total, selected
✳Rừng khung nhỏ nhất
✓ Thay đổiKiểm tra trước khi áp dụng ↗
Minh họa không gian làm việc
Kiểm tra trước khi áp dụng
So sánh hành vi thực tế với kết quả mong đợi. Nếu kiểm tra thất bại, tìm nguyên nhân trước khi sửa tiếp.
Mô hình
Cấu hình endpoint tương thích OpenAI hoặc Anthropic bằng URL cơ sở và khóa API nếu cần. Kiểm tra kết nối. Máy chủ mô hình cục bộ phải đang chạy; công cụ từ xa có thể truyền dữ liệu riêng.
Dự án
Thử nút rời, cạnh song song, khuyên và hòa xác định, từ chối đầu mút sai hoặc Boolean mà không đổi đầu vào.
def spanning_forest(count, edges):
if type(count) is not int or not 0 <= count <= 64 or type(edges) is not list or len(edges) > 1024:
raise ValueError("forest.input")
ordered = []
for edge in edges:
if type(edge) not in (list, tuple) or len(edge) != 3 or any(type(x) is not int for x in edge):
raise ValueError("forest.edge")
a, b, weight = edge
if not 0 <= a < count or not 0 <= b < count or abs(weight) > 10**9:
raise ValueError("forest.bounds")
ordered.append((weight, min(a, b), max(a, b)))
parent = list(range(count))
def root(node):
while parent[node] != node:
parent[node] = parent[parent[node]]
node = parent[node]
return node
selected, total = [], 0
for weight, a, b in sorted(ordered):
x, y = root(a), root(b)
if x != y:
parent[x] = y
selected.append((a, b, weight))
total += weight
return total, selected
Không gian lập trình với AI
Đưa đầu vào rời rạc vào quy ước phần mềm đồ thị
Forellin cung cấp cho lập trình viên không gian lập trình AI trên Windows để xem xét mã xử lý đồ thị cùng ứng dụng phụ thuộc vào nó. Bắt đầu cuộc trao đổi dự án với dạng biểu diễn đầu vào và kết quả mã gọi hàm cần. Yêu cầu trợ lý kiểm tra cách phần triển khai xử lý kết nối thiếu, cạnh lặp và thứ tự đầu ra trước khi đề xuất thay đổi. Những lựa chọn đó định hình tính năng không kém phép tính trung tâm.
Ngữ cảnh spanning_forest.py gợi ý tác vụ trong đó các nút không liên thông là điều được dự kiến, thay vì bị coi là thất bại khi cố kết nối mọi thứ. Bạn có thể yêu cầu mô hình giải thích cạnh nào được chọn và tổng liên quan đến chúng thế nào. Rà soát câu trả lời theo đồ thị nhỏ có thể kiểm tra bằng tay, rồi yêu cầu bản vá có phạm vi cụ thể nếu cần chỉnh quy ước kết quả hoặc xác thực.
Chạy kiểm tra dự án trên đầu vào liên thông và không liên thông, đồng thời xem ứng dụng xung quanh biểu diễn nút cô lập thế nào. Nếu có nhiều kết quả hợp lệ, thống nhất việc chọn mang tính xác định có quan trọng với bên sử dụng không. Forellin chấp nhận điểm cuối tương thích OpenAI hoặc Anthropic được hỗ trợ với thông tin xác thực khi cần. Có thể chọn mô hình AI không lọc khi được cung cấp, nhưng hạn chế mô hình, công cụ và dung lượng ngữ cảnh vẫn phụ thuộc dịch vụ đã cấu hình. Không gian làm việc hỗ trợ điều tra; ví dụ đồ thị và kết quả kiểm thử làm cơ sở chấp nhận mã.
Câu hỏi về thay đổi xử lý đồ thị
Có phải luôn từ chối đầu vào không liên thông?
Chỉ khi ứng dụng yêu cầu một cấu trúc liên thông duy nhất. Với kết quả dạng rừng, các thành phần rời rạc có thể hợp lệ. Nêu rõ sự khác biệt trước khi yêu cầu sửa để trợ lý không ép tạo kết nối mà đầu vào không cung cấp.
Nếu nhiều cách chọn cạnh có cùng tổng thì sao?
Quyết định bất kỳ nghiệm tối ưu hợp lệ nào cũng được hay bên sử dụng cần lựa chọn lặp lại được. Nếu thứ tự hoặc xử lý hòa quan trọng, đưa nó vào kết quả mong đợi và kiểm thử rõ ràng thay vì dựa vào thứ tự đầu vào tình cờ.
Làm sao kiểm tra tổng được báo cáo?
Dùng ví dụ nhỏ và đối chiếu độc lập các cạnh được chọn với tổng trọng số của chúng. Đồng thời kiểm tra bên gọi chỉ cần tổng hay cấu trúc đã chọn, vì những đầu ra đó hỗ trợ hành vi ứng dụng khác nhau.
Vì sao kiểm thử nút cô lập riêng?
Chúng có thể biến mất khỏi kết quả chỉ gồm cạnh ngay cả khi có trong đầu vào. Kiểm tra dạng biểu diễn xung quanh và quyết định ứng dụng giữ hoặc hiển thị các nút đó thế nào, thay vì cho rằng cạnh đã chọn mô tả mọi đỉnh.