Koszt łańcucha macierzy
Wyznacz minimalny koszt mnożeń skalarnych łańcucha do 12 macierzy.
def chain_cost(dimensions):
if type(dimensions) not in (list, tuple) or not 2 <= len(dimensions) <= 13:
raise ValueError("one through twelve matrices")
if any(type(d) is not int or not 1 <= d <= 1000 for d in dimensions):
raise ValueError("dimensions 1 through 1000")
n = len(dimensions)-1
cost = [[0]*n for _ in range(n)]
for width in range(2, n+1):
for left in range(n-width+1):
right = left+width-1
cost[left][right] = min(
cost[left][k]+cost[k+1][right]+
dimensions[left]*dimensions[k+1]*dimensions[right+1]
for k in range(left,right))
return cost[0][n-1]| Projekt | Sprawdź jedną macierz i różne nawiasowania, odrzucając wymiary spoza 1–1000 bez mnożenia elementów macierzy. |
|---|---|
| Sprawdź przed zastosowaniem | Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami. |
| Modele | Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie. |
def chain_cost(dimensions):
if type(dimensions) not in (list, tuple) or not 2 <= len(dimensions) <= 13:
raise ValueError("one through twelve matrices")
if any(type(d) is not int or not 1 <= d <= 1000 for d in dimensions):
raise ValueError("dimensions 1 through 1000")
n = len(dimensions)-1
cost = [[0]*n for _ in range(n)]
for width in range(2, n+1):
for left in range(n-width+1):
right = left+width-1
cost[left][right] = min(
cost[left][k]+cost[k+1][right]+
dimensions[left]*dimensions[k+1]*dimensions[right+1]
for k in range(left,right))
return cost[0][n-1]Oddziel obliczony plan od działań, które opisuje
ChainArbor udostępnia środowisko programistyczne dla Windows do pracy nad planowaniem obliczeń i omawiania założeń z podłączonym modelem. Najpierw określ, co funkcja planująca rzeczywiście zwraca i kto korzysta z wyniku. Oszacowanie kosztu, kolejność wykonania i wykonana operacja to różne wyniki; użyteczne zlecenie zmiany wyraźnie je rozróżnia.
Dostarczony przykład dotyczy planowania kosztu mnożenia łańcucha macierzy. Przed rozszerzeniem aplikacji możesz poprosić asystenta o przegląd walidacji wymiarów i raportowanego kosztu arytmetycznego. Dołącz kod wywołujący i jego oczekiwania, aby proponowana zmiana nie przedstawiała minimalnego kosztu jako harmonogramu mnożeń lub gotowego wyniku macierzowego.
W rozmowie ujawnij te decyzje dotyczące interfejsu, a potem przejrzyj wynikowe zmiany źródeł. Sprawdź krótkie ciągi wymiarów o niezależnie ustalonych kosztach, w tym przypadek jednej macierzy, i uruchom testy projektu. Jeśli później zażądasz planu wykonania, potraktuj jego reprezentację i weryfikację jako dodatkowe wymagania, zamiast zakładać, że wynikają z obliczenia kosztu.
Aby wybrać model AI bez filtrów, podłącz obsługiwaną usługę zgodną z OpenAI lub usługę Anthropic oferującą wybrany model. Dane uwierzytelniające, obsługa narzędzi i limity kontekstu zależą od konfiguracji. Środowisko nie znosi ograniczeń dostawcy; pomaga powiązać proponowane zmiany planowania ze źródłami i kryteriami akceptacji, które możesz przejrzeć.
Pytania określające zakres kodu planowania
O co poprosić, jeśli potrzebuję kolejności wykonania?
Poproś o jawną reprezentację kolejności i opisz, jak wykorzysta ją kod wywołujący. Funkcja raportująca minimalny koszt arytmetyczny może nie tworzyć takiej reprezentacji. Podaj przykłady weryfikujące zarówno plan, jak i jego raportowany koszt.
Dlaczego testować łańcuch złożony tylko z jednej macierzy?
Określa on zachowanie bazowe, gdy mnożenie nie jest potrzebne. Uwzględnij go obok małego przykładu z kilkoma macierzami, aby sprawdzić propozycję asystenta zarówno na granicy zakresu, jak i pod kątem logiki planowania dłuższych łańcuchów.
Czy środowisko może zweryfikować rzeczywiste wyniki numeryczne macierzy?
Do takich wyników używaj narzędzi numerycznych i testów projektu. Środowisko programistyczne wspiera omawianie i przegląd proponowanych zmian; poprawny przypadek testowy kosztu nie dowodzi, że osobna implementacja mnożenia zwraca poprawne wartości.
Jak zapobiec rozszerzeniu interfejsu podczas refaktoryzacji kosztu?
W zleceniu podaj obecny typ zwracany i wymagane zachowanie kodu wywołującego. Sprawdź różnice pod kątem nowych wyników lub zmienionych jednostek. Jeśli potrzebny jest bogatszy plan, określ go jako świadomy kolejny krok, a nie przypadkowy efekt refaktoryzacji.
ChainArbor · Zaktualizowano 2026-10-25