Numeri di Stirling di seconda specie
Conti i modi di dividere elementi in gruppi senza nome e non vuoti: 5 persone formano 2 squadre in 15 modi e 3 squadre in 25 modi, S(5,2) e S(5,3). Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- N
- 5
- K
- 2
- Valore
- 15
- Quantità
- 15
I numeri di Stirling di seconda specie rispondono a una domanda di conteggio fondamentale nella matematica discreta: dati n oggetti distinti, in quanti modi può particionarli in esattamente k gruppi non vuoti non etichettati? La risposta si scrive S(n,k) o talvolta {n choose k} con parentesi graffe. Questi numeri compaiono ogni volta che raggruppa persone in squadre senza nominare le squadre, divide un insieme di chiavi in secchi non etichettati, conta funzioni suriettive a meno di un fattore fattoriale, costruisce i numeri di Bell come somma su k, o valuta compiti che chiedono partizioni di insiemi piuttosto che permutazioni. Questa capacità accetta interi non negativi n (numero di elementi) e k (numero di sottoinsiemi non vuoti) e restituisce l'S(n,k) esatto come stringa decimale calcolata con programmazione dinamica BigInt, così valori ben oltre i limiti degli interi sicuri ordinari restano corretti cifra per cifra. Gli input con k negativo o con k maggiore di n vengono respinti con un errore di validazione chiaro invece di uno zero silenzioso o una risposta sbagliata.
Come si definiscono i numeri di Stirling di seconda specie
Un numero di Stirling di seconda specie S(n,k) conta le partizioni di un insieme a n elementi in esattamente k sottoinsiemi non vuoti non etichettati. L'ordine dentro un sottoinsieme non conta, e i sottoinsiemi stessi non sono ordinati: la partizione {{1,2},{3}} è la stessa di {{3},{1,2}}. La ricorrenza standard è S(n,k) = k · S(n−1,k) + S(n−1,k−1).
Intuitivamente, quando aggiunge l'elemento più recente n, o forma un singleton da solo (allora i restanti n−1 elementi formano k−1 sottoinsiemi, contati da S(n−1,k−1)), o si unisce a uno dei k sottoinsiemi esistenti in una partizione dei primi n−1 elementi in k blocchi (k scelte, volte S(n−1,k)). I casi base che chiudono la tabella sono S(0,0) = 1, S(n,0) = 0 per n > 0, S(0,k) = 0 per k > 0, S(n,1) = 1 e S(n,n) = 1.
Controlli classici da manuale includono S(3,2) = 3, S(4,2) = 7, S(5,2) = 15 e S(5,3) = 25. Il numero di Bell B_n, totale delle partizioni di un n-insieme con qualsiasi numero di blocchi, è la somma di S(n,k) su k da zero a n. Oggetti correlati ma diversi includono i numeri di Stirling di prima specie (che tracciano permutazioni per conteggio di cicli) e i coefficienti binomiali (che scelgono elementi senza partizionare il resto).
Questa implementazione non usa mai approssimazione in virgola mobile, campionamento Monte Carlo o tabelle esterne: riempie una riga di programmazione dinamica con aritmetica BigInt esatta così ogni cifra è corretta. Il percorso è pienamente deterministico — senza semi casuali, orologi, rete né deriva di modello — così gli stessi n e k producono sempre la stessa stringa.
Dove i conteggi di Stirling di seconda specie compaiono nel lavoro reale
Corsi di combinatoria e contest di programmazione chiedono costantemente in quanti modi dividere n persone etichettate in k squadre non etichettate, quante relazioni di equivalenza su n elementi hanno esattamente k classi, o in quanti modi distribuire n regali distinti in k scatole identiche non vuote — tutto uguale a S(n,k).
I progettisti di algoritmi usano tabelle di Stirling di seconda specie nell'analizzare strutture dati di partizione di insiemi, bozze di clustering con numero fisso di cluster, o nel contare i modi in cui un processo ricorsivo può raggruppare risultati intermedi. Corsi di probabilità e statistica collegano S(n,k) al numero di modi per assegnare n esiti distinti a k secchi non vuoti non etichettati e alla forma chiusa del numero di suriezioni da un n-insieme su un k-insieme, che è k!
· S(n,k). Educatori e preparazione ai colloqui spesso mostrano un breve triangolo di piccoli valori S(n,k); calcolare una sola voce in una chiamata mantiene le demo interattive allineate a manuali e chiavi di risposta senza mantenere a mano grandi tabelle. Se in seguito le servono numeri di Stirling di prima specie, solo numeri di Bell, conteggi di suriezione con il fattore k! già applicato, o un elenco esplicito di partizioni piuttosto che il conteggio, li tratti come intenti di ricerca separati piuttosto che sovraccaricare questa pagina.
Casi d'uso
Compiti e contest di partizione di insiemi
Calcoli S(n,k) esatto per problemi di olimpiade, esercizi di matematica discreta e chiavi automatiche che chiedono partizioni non etichettate in k blocchi.
Analisi di suriezione e clustering
Dimensioni il fattore di partizione dietro funzioni suriettive n→k e bozze di clustering a k fisso senza tabelle in virgola mobile.
Blocchi costruttivi dei numeri di Bell
Generi voci individuali di seconda specie sommando S(n,k) su k o validando pipeline di numeri di Bell contro triangoli da manuale.
Domande frequenti
Cos'è un numero di Stirling di seconda specie?
S(n,k) conta i modi di partizionare n elementi distinti in esattamente k sottoinsiemi non vuoti non etichettati. L'ordine dentro e tra sottoinsiemi non conta.
In cosa differisce dalla prima specie?
La prima specie conta permutazioni per numero di cicli. La seconda specie conta partizioni di insiemi per numero di blocchi. Rispondono a domande di conteggio diverse.
Perché il valore è una stringa invece di un numero?
I numeri di Stirling superano presto gli interi sicuri di JavaScript. Le stringhe decimali mantengono ogni cifra esatta per grandi S(n,k).
Quanto costa?
Lo strumento browser è gratuito e gira in locale.
Cosa succede se k è negativo o maggiore di n?
Il calcolo viene rifiutato con un messaggio chiaro, invece di restituire uno zero silenzioso. Usi un numero di gruppi tra 0 e il numero di elementi; entrambi arrivano fino a mille.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/combo/stirling-second \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5,"k":2}'const res = await fetch("https://api.kit.forhosting.com/combo/stirling-second", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5,
"k": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/combo/stirling-second",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5,
"k": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/combo/stirling-second", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5,"k":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5,"k":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/combo/stirling-second", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"n": 5,
"k": 2
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "combo.stirling_second",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
min_n | 0 |
max_n | 1000 |
min_k | 0 |
max_k | 1000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Lo strumento gratuito del browser e l'API a pagamento condividono un'unica funzione pura, così demo di aula e pipeline automatiche non divergono mai sulla stessa coppia.
Come si definiscono i numeri di Stirling di seconda specie
I limiti dichiarati mantengono n e k tra zero e mille con la regola che k non deve superare n, il che mantiene la latenza del caso peggiore adatta a uno strumento gratuito nel browser e a un percorso Worker leggero coprendo ancora esigenze di contest, aula e pipeline per conteggi esatti di partizioni.
Cosa invia e cosa riceve indietro
Il conteggio elementi n deve essere un intero da zero a mille inclusi; il conteggio sottoinsiemi k deve essere un intero da zero a mille inclusi e soddisfare k ≤ n. I messaggi di errore nominano il campo in errore e la regola fallita affinché form e script correggano l'input senza indovinare. In caso di successo la risposta include sempre n e k normalizzati, value e count come la stessa stringa decimale esatta di S(n,k), e una breve stringa di formula come S(5,2) per la visualizzazione. Fornisca un intero n obbligatorio nel campo n (alias items o size) e un intero k obbligatorio nel campo k (alias subsets o parts). Campi mancanti, non interi, decimali, n negativo, k negativo e qualsiasi k che superi n vengono respinti con invalid_input e non vengono addebitati. Controlli di esempio: n uguale a cinque e k uguale a due produce conteggio quindici; n uguale a cinque e k uguale a tre produce venticinque; n uguale a tre e k uguale a uno produce uno; n uguale a quattro e k uguale a quattro produce uno; n uguale a zero e k uguale a zero produce uno; k uguale a sei con n uguale a tre produce invalid_input perché k supera n; k uguale a meno uno produce invalid_input. Il contratto è JSON stabile adatto a test unitari, demo di aula e pipeline batch. Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento; i fallimenti di validazione non consumano il saldo prepagato.
Dove i conteggi di Stirling di seconda specie compaiono nel lavoro reale
Poiché questa capacità è un motore di parse puro, il prezzo API è la base pubblicata di $0.002 per elemento riuscito e la validazione fallita non consuma il saldo.
Domande tecniche
Cosa succede se k è negativo o maggiore di n?
La richiesta fallisce con invalid_input. Questo calcolatore richiede 0 ≤ k ≤ n; k negativo o che superi n è respinto e non addebitato.