Paradosso dell'hotel di Hilbert
Con tre ospiti nelle camere da 1 a 3 e due nuovi arrivi, ognuno si sposta di due camere e si liberano la 1 e la 2. Inserisca il suo registro e quanti arrivano per vedere la nuova camera di ogni ospite. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
L'hotel di Hilbert è il classico esperimento mentale sull'infinito: un albergo al completo con infinite camere può sempre fare spazio ad altri ospiti, semplicemente chiedendo a ogni ospite attuale di spostarsi in avanti. Lei invia il registro attuale — ogni ospite con il numero della sua camera — più il numero dei nuovi arrivi, e riceve la nuova assegnazione di camera per ogni ospite insieme all'elenco delle camere appena liberate. Un numero di arrivi negativo viene rifiutato, perché gli ospiti non possono «dis-arrivare». L'esecuzione è deterministica, senza casualità né chiamate esterne, quindi lo stesso input produce sempre la stessa riassegnazione.
Il paradosso, reso concreto
L'esperimento mentale di David Hilbert immagina un albergo con infinite camere, tutte occupate. Quando arriva un nuovo ospite, un normale albergo pieno deve respingerlo; l'hotel di Hilbert no. Il direttore chiede semplicemente all'ospite della camera 1 di passare alla camera 2, a quello della camera 2 di passare alla camera 3, e così via: ogni ospite si sposta di una posizione e la camera 1 è improvvisamente libera.
Se arriva un pullman con quaranta turisti, tutti si spostano di quaranta camere, liberando le camere da 1 a 40. Il simulatore del paradosso dell'hotel di Hilbert esegue esattamente questo spostamento sul registro che Lei fornisce: il numero di camera di ogni ospite attuale viene aumentato del numero di arrivi, e le camere liberate in fondo alla numerazione vengono restituite esplicitamente, così può vedere con precisione dove andrebbero i nuovi arrivati.
La lezione controintuitiva — che un albergo infinito pieno ha sempre posto — diventa un semplice elenco verificabile di spostamenti di camera.
Come viene calcolato lo spostamento
L'algoritmo è volutamente semplice e completamente deterministico. Lei fornisce un elenco di ospiti attuali, ciascuno con un nome e un numero di camera intero positivo, più il numero di nuovi arrivi. Il simulatore convalida il registro — ogni camera deve essere un intero positivo e il numero di arrivi un intero non negativo — e poi somma il numero di arrivi a ogni numero di camera.
Un ospite nella camera 7 con tre nuovi arrivi finisce nella camera 10. L'output restituisce, per ogni ospite, la vecchia e la nuova camera, insieme all'elenco completo delle camere liberate: gli interi da 1 fino al numero di arrivi. Non c'è casualità, né orologio, né accesso alla rete nel calcolo, quindi chiamate ripetute con lo stesso input restituiscono risultati identici byte per byte.
Casi d'uso
Insegnare il paradosso in modo interattivo
Mostri agli studenti esattamente in quale camera si sposta ogni ospite quando arrivano uno, dieci o mille nuovi ospiti in un albergo pieno.
Generare dati per enigmi e quiz
Produca assegnazioni di camere coerenti prima e dopo, per enigmi matematici, senza calcolare gli spostamenti a mano.
Domande frequenti
Quanto costa?
È inoltre gratuito da eseguire nel Suo browser su questa pagina con lo stesso codice.
Perché un numero di arrivi negativo viene rifiutato?
Perché il paradosso funziona in una sola direzione: un albergo infinito pieno può sempre assorbire altri ospiti, ma gli ospiti non possono «dis-arrivare».
La simulazione è in qualche modo casuale?
No. È completamente deterministica: nessuna casualità, nessun orologio, nessuna rete. Lo stesso input restituisce sempre le stesse assegnazioni.
Quali sono i limiti di input?
Ogni numero di camera deve essere un intero positivo.
Questo modella un albergo davvero infinito?
Simula il passo finito del paradosso: lo spostamento di un dato registro di un dato numero di arrivi. L'infinito è la conclusione: lo spostamento funziona qualunque sia la dimensione dell'albergo.
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/math/hilberts-hotel-paradox \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"guests":[{"guest":"Ada","room":1},{"guest":"Alan","room":2},{"guest":"Grace","room":3}],"new_arrivals":2}'const res = await fetch("https://api.kit.forhosting.com/math/hilberts-hotel-paradox", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"guests": [
{
"guest": "Ada",
"room": 1
},
{
"guest": "Alan",
"room": 2
},
{
"guest": "Grace",
"room": 3
}
],
"new_arrivals": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/hilberts-hotel-paradox",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"guests": [
{
"guest": "Ada",
"room": 1
},
{
"guest": "Alan",
"room": 2
},
{
"guest": "Grace",
"room": 3
}
],
"new_arrivals": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/hilberts-hotel-paradox", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"guests":[{"guest":"Ada","room":1},{"guest":"Alan","room":2},{"guest":"Grace","room":3}],"new_arrivals":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"guests":[{"guest":"Ada","room":1},{"guest":"Alan","room":2},{"guest":"Grace","room":3}],"new_arrivals":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/hilberts-hotel-paradox", 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
{
"guests": [
{
"guest": "Ada",
"room": 1
},
{
"guest": "Alan",
"room": 2
},
{
"guest": "Grace",
"room": 3
}
],
"new_arrivals": 2
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.hilberts_hotel_paradox",
"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
max_guests | 10000 |
max_arrivals | 1000000 |
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
Questa API simula esattamente tale spostamento.
Come viene calcolato lo spostamento
Un numero di arrivi negativo viene rifiutato con un errore invalid_input e non viene mai addebitato, perché il paradosso funziona in una sola direzione: si possono sempre ospitare più persone, ma non si possono far «dis-arrivare».
Dove si inserisce
Questa capacità è pensata per l'insegnamento, le dimostrazioni e le verifiche rapide. I docenti la usano per trasformare un paradosso astratto in qualcosa che gli studenti possono sperimentare: cambiare il numero di arrivi, osservare ogni assegnazione aggiornarsi e confermare che le camere liberate corrispondono sempre ai nuovi arrivati. Funziona anche come esempio giocoso di una funzione di riassegnazione pura — la stessa operazione «sposta ogni chiave di una costante» compare nel bilanciamento del carico, nei buffer circolari e negli schemi di rehashing — e questo endpoint la dimostra senza alcuna configurazione. Funziona gratuitamente nel Suo browser su questa pagina con lo stesso codice che serve l'API, quindi paga solo quando la automatizza, a $0.002 a richiesta. I limiti di input mantengono il registro ragionevole — fino a diecimila ospiti e un milione di arrivi per chiamata — ben oltre le esigenze di qualsiasi aula o demo, garantendo al contempo risposte istantanee.
Casi di integrazione
Dimostrare una funzione di spostamento deterministica
Illustri lo schema «sposta ogni chiave di una costante» usato nel rehashing e nel bilanciamento del carico con un esempio memorabile.
Domande tecniche
Cosa contiene il campo freed_rooms?
I numeri delle camere liberate dallo spostamento: gli interi da 1 fino al numero di arrivi. Sono le camere che i nuovi ospiti occuperebbero.