Skip to main content

Note bibliografiche

  • Chapter
Algoritmi

Part of the book series: Unitext ((UNITEXTINF))

  • 802 Accesses

Riassunto

L’obbiettivo di queste note bibliografiche è duplice. Il primo è di fornire al lettore ulteriore materiale in cui trovare resoconti più dettagliati sugli argomenti discussi. Il secondo è di dare il giusto credito alle persone responsabili della ricerca di cui si fa cenno nel libro, e di indirizzare il lettore, ove possibile, alle pubblicazioni originali in cui sono contenute le loro idee e i loro risultati.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 59.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Note bibliografiche

Capitolo 1 I seguenti libri potranno illuminare il lettore sulla storia della computazione

  • A History of Computing in the Twentieth Century, N. C. Metropolis et al., eds, Academic Press, 1980.

    Google Scholar 

  • F. G. Ashherst, Pioneers of Computing, Frederick Muller, 1983.

    Google Scholar 

  • W. Aspray, John von Neumann and the Origins of Modern Computing (History of Computing), MIT Press, 1990.

    Google Scholar 

  • M. R. Williams, A History of Computing Technology, 2nd edn, Wiley-IEEE Press, 1997.

    Google Scholar 

  • M. Campbell-Kelly and W. Aspray, Computer: A History of the Information Machine, Basic Books, 1997.

    Google Scholar 

  • G. Ifrah, The Universal History of Computing: From the Abacus to the Quantum Computer, John Wiley & Sons, 2002.

    Google Scholar 

  • C. Wurster, Computers: An Illustrated History, TASCHEN America Llc, 2002. Vale la pena leggere anche le seguenti biografie di due dei pionieri più influenti dell’informatica

    Google Scholar 

  • A. Hyman, Charles Babbage, Pioneer of the Computer, Princeton University Press, 2004.

    Google Scholar 

  • A. Hodges, Alan Turing: The Enigma, Vintage, 1992. Le seguenti riviste sono dedicate interamente alla storia della computazione, e spesso contengono articoli illuminanti circa le origini e le visioni dei primi ricercatori

    Google Scholar 

  • IEEE Annals of the History of Computing, abbreviato in Ann. Hist. Comput; pubblicato da IEEE ogni 3 mesi.

    Google Scholar 

  • Journal of the Association for History and Computing, abbreviated J. Assoc. Hist. Comput.; pubblicato da AAHC, la American Association for History and Computing.

    Google Scholar 

  • History and Computing; pubblicata da Edinburgh University Press and AHC, la Association for History and Computing. L’analogia tra l’informatica e la chirurgia [p. 6] appare in

    Google Scholar 

  • E. W. Dijkstra, “On a Cultural Gap,” The Mathematical Intelligencer 8(1986), pp. 48–52. Un resoconto dettagliato e illustrato della macchina analitica di Babbage [p. 9] appare in

    Article  MATH  Google Scholar 

  • A. G. Bromley, “Charles Babbage’s Analytical Engine, 1838,” Ann. Hist. Comput. 4 (1982), pp. 196–217. L’ultima versione del curriculum ACM per l’informatica, insieme ai resoconti di una task force congiunta IEEE/ACM per la definizione di un curriculum per la computazione[p. 11], può essere trovata a

    Article  MathSciNet  MATH  Google Scholar 

  • P. J. Denning et al., “Computing as a Discipline,” Comm. Assoc. Comput. Mach. 32 (1989), pp. 9–23.

    Google Scholar 

  • P. C. Sinclair and R. K. Malinowski, French Cooking, Weathervane Books, 1978.

    Google Scholar 

Capitolo 2 Ci sono diversi libri di testo eccellenti che trattano algoritmi e strautture dati. Nelle note dei Capitoli 4, 5 e 6 elencheremo quelli che enfatizzano i metodi di progettazione, la progettazione mediante prove di correttezza e la progettazione per l’efficienza. Qui verranno posti quelli che sono più adatti a questo capitolo meno specifico

  • A. V. Aho, J. E. Hopcroft, and J. D. Ullman, Data Structures and Algorithms, Addison-Wesley, 1983.

    Google Scholar 

  • E. Horowitz and S. Sahni, Fundamentals of Data Structures in Pascal, 4th edn, W. H. Freeman & Co., 1999.

    Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 1: Fundamental Algorithms, 3rd edn, Addison-Wesley, 1997.

    Google Scholar 

  • T. A. Standish, Data Structures, Algorithms and Software Principles, Addison-Wesley, 1994.

    Google Scholar 

  • N. Wirth, Algorithms and Data Structures, Prentice-Hall, 1986.

    Google Scholar 

  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, 2nd edn, MIT Press, 2001. Le seguenti monografie sono state di grande influenza

    Google Scholar 

  • E. W. Dijkstra, “Notes on Structured Programming,” in Structured Programming, Academic Press, 1972.

    Google Scholar 

  • C. A. R. Hoare, “Notes on Data Structuring,” in Structured Programming, Academic Press, 1972. Seguono diverse esposizioni degli argomenti trattati in questo capitolo

    Google Scholar 

  • D. E. Knuth, “Algorithms,” Scientific American 236:4 (1977), pp. 63–80.

    Article  MathSciNet  Google Scholar 

  • N. Wirth, “Data Structures and Algorithms,” Scientific American 251:3 (1984), pp. 60–69. A parte i giornali generali già elencati, eccone alcuni altri che pubblicano articoli su algoritmi e strutture dati

    Article  Google Scholar 

  • Journal of Algorithms, abbreviato in J. Algs.; pubblicato da Elsevier.

    Google Scholar 

  • Journal of Complexity, abbreviato in J. Complex.; pubblicato da Elsevier.

    Google Scholar 

  • Discrete & Computational Geometry, abbreviato in Disc. Comput. Geom.; pubblicato da Springer-Verlag.

    Google Scholar 

  • Combinatorica; pubblicato da Springer-Verlag.

    Google Scholar 

  • Journal of Symbolic Computation, abbreviato in J. Symb. Comput.; pubblicato da Elsevier.

    Google Scholar 

  • Computing; pubblicato da Springer-Verlag.

    Google Scholar 

  • BIT; pubblicato da Kluwer Academic Publishers. L’algoritmo di BubbleSort [pp. 28–30], come anche gli altri algoritmi di ordinamento, é descritto in dettaglio nel volume enciclopedico di Knuth

    Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 3: Sorting and Searching, 2nd edn, Addison-Wesley, 1998. Si ritiente che le controversie che riguardano l’istruzione di “goto” [pp. 30–1] sono originate nella seguente lettera all’editore

    Google Scholar 

  • E. W. Dijkstra, “Go To Statement Considered Harmful,” Comm. Assoc. Comput. Mach. 11 (1968), pp. 147–148. Altre idee, inclusa quella di eliminare certe strutture di controllo in favore di un insieme minimo [pp 31–2], possono essere trovate nei seguenti articoli

    Google Scholar 

  • D. E. Knuth, “Structured Programming with go to Statements,” Comput. Surv. 6 (1974), pp. 261–301.

    Article  MATH  Google Scholar 

  • D. Harel, “On Folk Theorems,” Comm. Assoc. Comput. Mach. 23 (1980), pp. 379–389. Il seguente libro è interamente dedicato all’idea (promossa da diversi ricercatori) di scrivere programmi ben strutturati che fanno uso solo di pochi e selezionati costrutti di controllo

    MATH  Google Scholar 

  • R. C. Linger, H. D. Mills und B. I. Witt, Structured Programming: Theory and Practice, Addison-Wesley, 1979. Un buon posto per approfondire le varie techniche di diagrammi di flusso e le notazioni in generale [pp. 31–6] è

    Google Scholar 

  • T. R. G. Green, “Pictures of Programs and Other Processes, or How To Do Things with Lines,” Behaviour and Information Technology 1 (1982), pp. 3–36. Ci sono molti posti in cui si puleggere circa la progettazione top-down di algoritmi e programmi grandi, usando subroutine o mezzi simili [pp. 33–8]. A parte gli appunti di Dijkstra circa la programmazione strutturata, i seguenti sono stati tutti particolarmente influenti

    Article  Google Scholar 

  • N. Wirth, “Program Development by Stepwise Refinement,” Comm. Assoc. Comput. Mach. 14 (1971), pp. 221–227.

    MATH  Google Scholar 

  • D. L. Parnas, “A Technique for Software Module Specification with Examples,” Comm. Assoc. Comput. Mach. 15 (1972), pp. 330–336.

    Google Scholar 

  • E. Yourdon and L. L. Constantine, Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design, Prentice-Hall, 1979. La ricorsione [pp. 38–40] è un argomento affascinante ed è possibile trovare moltissimo materiale interessante in

    Google Scholar 

  • E. Roberts, Thinking Recursively, John Wiley & Sons, 1986.

    Google Scholar 

  • D. R. Hofstadter, Gödel, Escher, Bach: An Eternal Golden Braid, Basic Books, 1979. La soluzione ricorsiva al problema delle Torri di Hanoi [pp. 40–1] appare praticamente in qualsiasi libro elementare sugli algoritmi, inclusi molti già citati. Il Treesort [pp. 51–5] è descritto in dettaglio, e se ne studia le origini visto che ha avuto molti scopritori indipendenti, nel volume di Knuth sull’ordinamento che abbiamo già citato, dove prende il nome di tree insertion sort (ovvero, ordinamento di inserzione in un albero). Strutture dati che si aggiustano da sole [pp. 55] appaiono spesso in molti degli algoritmi descritti nei libri generali già elencati per questo capitolo. Forse quelli più conosciuti sono gli alberi binari bilanciati, i quali sono discussi nel volume di Knuth sull’ordinamento e sulla ricerca. Il seguente capitolo contiene ulteriore materiale su questo argomento.

    Google Scholar 

  • K. Mehlhorn and A. Tsakalidis, “Data Structures,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 301–341. Esistono numerosi libri dedicati alle basi di dati [pp. 55–7]. Contengono un tesoro di informazioni sui modelli di database, i linguaggi, e sui metodi di progettazione. Eccone alcuni

    Google Scholar 

  • C. J. Date, An Introduction to Database Systems, 8th edn, Addison-Wesley, 2004.

    Google Scholar 

  • J. D. Ullman, Principles of Database and Knowledge-Base Systems: The New Technologies, W. H. Freeman & Co., 1989.

    Google Scholar 

  • R. Elmasri and S. B. Navathe, Fundamentals of Database Systems, 3rd edn, Addison-Wesley, 2002.

    Google Scholar 

  • D. Maier, The Theory of Relational Databases, Computer Science Press, 1983.

    Google Scholar 

  • A. Silberschatz, H. F. Korth, and S. Sudarshan, Database System Concepts, 3rd edn, McGraw-Hill, 1999. Il seguente articolo è considerato uno di quelli più influenti nella formazione degli approcci principali ai database

    Google Scholar 

  • E. F. Codd, “A Relational Model for Large Shared Data Banks,” Comm. Assoc. Comput. Mach. 13 (1970), pp. 377–387. Le seguenti riviste e newsletter pubblicano articoli sulle basi di dati

    MATH  Google Scholar 

  • ACM Transactions on Database Systems, abbreviated ACM Trans. Database Syst., o a volte semplicemente TODS; pubblicato dall’ACM.

    Google Scholar 

  • Data and Knowledge Engineering, abbreviato in Data & Knowl. Eng.; pubblicato da Elsevier.

    Google Scholar 

  • Information Systems, abbreviato in Inf. Syst.; pubblicato da Elsevier.

    Google Scholar 

  • ACM SIGMOD Record; pubblicato dal Special Interest Group on Management of Data dell’ACM. Il data mining e il data warehousing [p. 55] vengono discussi in

    Google Scholar 

  • T. Hastie, T. Tibshirani, and J. Friedman, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Springer-Verlag, 2001.

    Google Scholar 

  • J. Han and M. Kamber, Data Mining: Concepts and Techniques, Morgan Kaufmann, 2000.

    Google Scholar 

  • Advances in Knowledge Discovery and Data Mining, U. M. Fayyad, G. Piatetsky-Shapiro, P. Smyth, and R. Uthurusamy, eds., AAAI Press, 1996.

    Google Scholar 

  • B. Devlin, Data Warehouse: From Architecture to Implementation, Addison-Wesley, 1996. Le seguenti riviste pubblicano articoli sul data mining e il data warehousing

    Google Scholar 

  • A CM SIGKDD Explorations; pubblicato dal Special Interest Group on Knowledge Discovery and Data Mining dell’ACM.

    Google Scholar 

Capitolo 3 Esistono diversi libri sui principi generali da seguire quando si progetta un linguaggio di programmazione. Eccone alcuni

  • T. W. Pratt and M. V. Zelkowitz, Programming Languages: Design and Implementation, 4th edn, Prentice-Hall, 2001.

    Google Scholar 

  • H. F. Ledgard and M. Marcotty, The Programming Language Landscape, 2nd edn, Science Research Associates, 1986.

    Google Scholar 

  • J. E. Nicholls, The Structure and Design of Programming Languages, Addison-Wesley, 1975.

    Google Scholar 

  • M. L. Scott, Programming Language Pragmatics, Morgan Kaufmann, 2000.

    Google Scholar 

  • R. D. Tennent, Principles of Programming Languages, Prentice-Hall International, 1981. Il seguente si concentra in particolare sui tipi di dati astratti

    Google Scholar 

  • D. M. Harland, Polymorphic Programming Languages, Halstead Press, 1984. In aggiunta, il seguente volume contiene una collezione estensiva di articoli centrali dell’area dei linguaggi di programmazione, i quali discutono sia di principi che di linguaggi specifici

    Google Scholar 

  • Programming Languages: A Grand Tour, 3rd edn, E. Horowitz, ed., W. H. Freeman & Co., 1995. La storia dei linguaggi di programmazione è descritta in un articolo di P. Wegner nel suo “gran tour”, e anche in

    Google Scholar 

  • History of Programming Languages, R. L. Wexelblat, ed., Academic Press, 1981.

    Google Scholar 

  • History of Programming Languages, vol. 2, T. J. Bergin and R. G. Gibson, eds., Addison-Wesley, 1996.

    Google Scholar 

  • J. E. Sammet, Programming Languages: History and Fundamentals, Prentice-Hall, 1969. Un’esposizione di diversi argomenti che hanno a che vedere con i linguaggi di programmazione e la loro struttura si trova in

    Google Scholar 

  • L. G. Tesler, “Programming Languages,” Scientific American 251:3 (1984), pp. 70–78. Le seguenti riviste contengono articoli circa i principi dei linguaggi di programmazione

    Article  Google Scholar 

  • ACM Transactions on Programming Languages and Systems, abbreviated A CM Trans. Prog. Lang. Syst., o semplicemente TOPLAS; pubblicato dall’ACM.

    Google Scholar 

  • Computer Languages, Systems and Structures, abbreviato in Comput. Lang., Syst. Struc.; pubblicato da Elsevier.

    Google Scholar 

  • Science of Computer Programming, abbreviato in Sci. Comput. Prog.; pubblicato da Elsevier.

    Google Scholar 

  • A CM SIGPLAN Notices; pubblicato dal Special Interest Group on Programming Languages dell’ACM.

    Google Scholar 

  • Formal Aspects of Computing, abbreviato in Form. Aspects Comput.; pubblicato da Springer-Verlag. La notazione BNF per la definizione della sintassi [p. 65] appare in

    Google Scholar 

  • J. Backus, “The Syntax and Semantics of the Proposed International Algebraic Language of the Zurich ACM-GAMM Conference,” Proc. Int. Conf. on Information Processing, UNESCO, pp. 125–132, 1959. Venne utilizzata estensivamente nella celebrata, e estremamente inluente, definizione del linguaggio ALG0L60

    Google Scholar 

  • P. Naur, ed., “Revised Report on the Algorithmic Language Algol 60,” Comm. Assoc. Comput. Mach. 6 (1963), pp. 1–17. I diagrammi di sintassi per la definizione della sintassi di un linguaggio di programmazione [Figure ??, p. 66] appaiono in

    Google Scholar 

  • K. Jensen and N. Wirth, PASCAL User Manual and Report, 3rd edn, Springer-Verlag, 1984. Parlando si semantica [pp. 67–8], i seguenti articoli sono stati molto influenti nella ricerca sulla semantica dei linguaggi di programmazione

    Google Scholar 

  • D. S. Scott and C. Strachey, “Towards a Mathematical Semantics for Computer Languages,” Proc. Symp. on Computers and Automata, Polytechnic Inst. of Brooklyn Press, pp. 19–46, 1971.

    Google Scholar 

  • D. S. Scott, “Mathematical Concepts in Programming Language Semantics,” Proc. 1972 Spring Joint Computer Conference, AFIPS Press, Montvale, NJ, pp. 225–234, 1972. Diversi libri trattano in maniera approfondita i linguaggi di programmazione, tra cui

    Google Scholar 

  • J. E. Stoy, Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory, MIT Press, 1977.

    Google Scholar 

  • J. W. de Bakker, Mathematical Theory of Program Correctness, Prentice-Hall International, 1980.

    Google Scholar 

  • D. A. Schmidt, Denotational Semantics: A Methodology for Language Development, McGraw-Hill, 1988.

    Google Scholar 

  • L. Allison, A Practical Introduction to Denotational Semantics, Cambridge University Press, 2002. Alcuni articoli di sondaggio circa la semantica sono

    Google Scholar 

  • R. D. Tennent, “The Denotational Semantics of Programming Languages,” Comm. Assoc. Comput. Mach. 19 (1976), pp. 437–453.

    MathSciNet  MATH  Google Scholar 

  • D. S. Scott, “Logic and Programming Languages,” Comm. Assoc. Comput. Mach. 20 (1977), pp. 634–641. I seguenti libri discutono del processo di compilazione in dettaglio [pp. 70–2]

    MATH  Google Scholar 

  • A. Aho, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986.

    Google Scholar 

  • S. S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997.

    Google Scholar 

  • A. W. Appel and J. Palsberg, Modern Compiler Implementation in Java, 2nd edn, Cambridge University Press, 2002. Il seguente articolo molto influente discute della possibilità di definire tipi di dati astratti speciali [pp. 73]

    Google Scholar 

  • J. V. Guttag and J. J. Horning, “The Algebraic Specification of Abstract Data Types,” Acta Inf. 10 (1978), pp. 27–52. Libri che trattano di paradigmi di programmazione specifici verranno citati più avanti. Cio nonostante, il seguente libro introduce e confronta diversi paradigmi, inclusi quello imperativo, quello funzionale e quello logico

    Article  MathSciNet  MATH  Google Scholar 

  • H. Abelson and G. J. Sussman, Structure and Interpretation of Computer-Programs, 2nd edn, MIT Press, 1996. Il Fortran [pS. 76] fu progettato da L. Backus e da un team di scienziati dell’IBM nel 1954. Uno dei tanti libri che lo escrivono è

    Google Scholar 

  • D. D. McCracken, A Guide to FORTRAN Programming, John Wiley & Sons, 1961. Versioni successive sono trattate in

    Google Scholar 

  • W. Brainerd, “FORTRAN 77,” Comm. Assoc. Comput. Mach. 21 (1978), pp. 806–820.

    MATH  Google Scholar 

  • J. C. Adams, W. S. Brainerd, J. T. Martin, B. T. Smith, and J. L. Wagener, Fortran 95 Handbook, MIT Press, 1997. Il Cobol [p. 77] fu progettato nel 1959 da un gruppo tecnico sponsorizzato del Dipartimento della Difesa Statiunitense. Due dei molti libri che lo descrivono sono

    Google Scholar 

  • D. D. McCracken and U. Garbassi, A Guide to COBOL Programming, 2nd edn, John Wiley & Sons, 1970.

    Google Scholar 

  • D. M. Collopy, Introduction to COBOL: A Guide to Modular Structured Programming, Prentice-Hall, 1999. Ci sono molti libri sul PL/I [pp.77-9], la maggiore parte dei quali non sono più in stampa. Un classico è

    Google Scholar 

  • G. M. Weinberg, PL/I Programming: A Manual of Style, McGraw-Hill, 1970. Uno pi’’u recente è

    Google Scholar 

  • R. A. Vowels, Introduction to PL/I, Algorithms, and Structured Programming, 3rd edn, Vowels, 1997. Il Pascal [p. 79] fu progettato da N. Wirth e fu per la prima volta descritto in

    Google Scholar 

  • N. Wirth, “The Programming Language PASCAL,” Acta Informatica 1 (1971), pp. 35–63. Un articolo molto importante che studia il linguaggio, scritto dal suo inventore, è

    Article  MATH  Google Scholar 

  • N. Wirth, “An Assessment of the Programming Language PASCAL,” IEEE Trans. Soft. Eng. SE-1 (1975), pp. 192–198. Il C [p. 79–80] fu progettato da B. W. Kernighan e D. M. Ritchie. Il loro libro è il punto di riferimento classico per il linguaggio

    Article  Google Scholar 

  • B. W. Kernighan and D. M. Ritchie, The C Programming Language, 2nd edn, Prentice-Hall, 1988. Nel seguente articolo molto influente J. Backus (citato prima come sviluppatore del Fortran e della notazione BNF) chiese che venissero sviluppati linguaggi di programmazione funzionali [pp. 81–5], e che fossero basati su un insieme piccolo di primitive molto potenti, in modo da facilitare il ragionamento su quei programmi e sulla loro dimostrazione di correttezza

    Google Scholar 

  • J. Backus, “Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs,” Comm. Assoc. Comput. Mach. 21 (1978), pp. 613–641. Il Lisp [p. 81–4] fu progettato da J. McCarthy nel 1960, basandosi sul lambda calculus [p. 84] di A. Church e S. C. Kleene. Un eccellente riferimento al lambda calculus puo essere trovato in

    MathSciNet  MATH  Google Scholar 

  • H. P. Barendregt, The Lambda Calculus: Its Syntax and Semantics, 2nd edn, North Holland, 1984. Il linguaggio Lisp è descritto in molti posti, tra cui

    Google Scholar 

  • J. Allen, The Anatomy of LISP, McGraw-Hill, 1978.

    Google Scholar 

  • P. H. Winston and B. K. P. Horn, LISP, 3rd edn, Addison-Wesley, 1989.

    Google Scholar 

  • G. L. Steele, Common Lisp, the Language, 2nd edn, Digital Press, 1990. In aggiunta al libro di Abelson e Sussman sopra menzionato, i seguenti libri descrivono il dialetto del Lisp, Scheme

    Google Scholar 

  • B. Harvey and M. Wright, Simply Scheme, 2nd edn, MIT Press, 1999.

    Google Scholar 

  • R. K. Dybvig, The Scheme Programming Language, 3rd edn, MIT Press, 2003. Ecco le introduzioni alla programmazione funzionale che usano HASKEL e MIRANDA

    Google Scholar 

  • P. Hudak, The Haskell School of Expression, Cambridge University Press, 2000.

    Google Scholar 

  • S. Thompson, Haskell: The Graft of Functional Programming, 2nd edn, Addison-Wesley, 1999.

    Google Scholar 

  • S. Thompson, Miranda: The Graft of Functional Programming, Addison-Wesley, 1995. Il Prolog [p. 85–7] fu progettato da A. Colmerauer nel 1970, basandosi su idee di R. Kowalski. L’approccio sottostante è descritto in

    Google Scholar 

  • R. Kowalski, “Algorithm = Logic + Control,” Comm. Assoc. Gomput. Mach. 22 (1979), pp. 424–436.

    Article  MATH  Google Scholar 

  • J. W. Lloyd, Foundations of Logic Programming, 2nd edn, Springer-Verlag, 1987. Buoni libri per leggere del linguaggio sono

    Google Scholar 

  • W. F. Clocksin and C. S. Mellish, Programming in PROLOG, 5th edn, Springer-Verlag, 2003.

    Google Scholar 

  • L. Sterling and E. Shapiro, The Art of Prolog, 2nd edn, MIT Press, 1994. I seguenti due libri sono buoni per approfondire la programmazione orientata a oggetti [pp. 88–93]. Il primo si basa su Eiffel (anche se la prola “Eiffel” appare in esso solo una volta), mentre il secondo su Java

    Google Scholar 

  • B. Meyer, Object-Oriented Software Construction, 2nd edn, Prentice-Hall, 1997.

    Google Scholar 

  • B. Liskov with J. Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, 2000. Uno sguardo critico ai principi della programmazione orientata a oggetti, che confronta i suoi vantaggi e i suoi svantaggi prendendo in considerazione tre linguaggi influenti, è

    Google Scholar 

  • I. Joyner, Objects Unencapsulated: Java, Eiffel, and C++??, Prentice-Hall, 1999. Il Simula [p. 88] fu progettato da O.-J. Dahl e K. Nygaard. Esso è descritto in

    Google Scholar 

  • O.-J. Dahl and K. Nygaard, “SIMULA—an ALGOL-Based Simulation Language,” Comm. Assoc. Comput. Mach. 9 (1966), pp. 671–678.

    MATH  Google Scholar 

  • G. M. Birtwistle, O.-J. Dahl, B. Myhrhaug, and K. Nygaard, Simula Begin, Van Nostrand Reinhold, 1973. Il Smalltalk [p. 90] fu sviluppato dal Learning Research Group di XEROX PARC (Palo Alto Research Center) corne parte dello sviluppo pionieristico di un personal computer che include va un display a bitmap, un mouse e finestre sovrapponibili. Venne fatto prima che le idee vennero commercializzate da altre aziende. I seguenti libri descrivono il linguaggio e il suo innovativo ambiente di sviluppo

    Google Scholar 

  • A. Goldberg and D. Robson, Smalltalk-80: The Language, Addison-Wesley, 1989.

    Google Scholar 

  • A. Goldberg, Smalltalk-80: The Interactive Programming Environment, Addison-Wesley, 1984. IlC++ [p. 90] fu sviluppato da B. Stroustrup a AT&T Labs. Il suo libro defmitivo sul linguaggio è

    Google Scholar 

  • B. Stroustrup, The C++ Programming Language, 3rd edn, Addison-Wesley, 2000. Java [p. 90–3] venne sviluppato per Sun Microsystems da J. Gosling, e originariamente era inteso per lo sviluppo di prodotti di largo consumo “intelligenti”. La descrizione ufnciale del linguaggio viene fornita in

    Google Scholar 

  • K. Arnold and J. Gosling, The Java Programming Language, 3rd edn, Addison-Wesley, 2000. Eiffel [p. 93] fu sviluppato da B. Meyer, secondo il suo approccio teoretico alla programmazione orientata a oggetti. L’approccio generale è descritto nel suo libro di testo citato sopra, mentre il linguaggio stesso è descritto nel seguente libro

    Google Scholar 

  • B. Meyer, Eiffel: The Language, Prentice-Hall, 1992. La progettazione delle librerie di Eiffel è anch’essa interessante; essa è descritta in

    Google Scholar 

  • B. Meyer, Reusable Software: The Base Object-Oriented Component Libraries, Prentice-Hall, 1994.

    Google Scholar 

Capitolo 4 Esistono diversi libri eccellenti sugli algoritmi che, tra le altre cose, si concentrano su paradigmi e metodi

  • A. V. Aho, J. E. Hopcroft, and J. D. Ullman, The Design and Analysis of Computer Algorithms, Addison-Wesley, 1974.

    Google Scholar 

  • E. Horowitz, S. Sahni and S. Rajasekaran, Computer Algorithms, Computer Science Press, 1997.

    Google Scholar 

  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, 2nd edn, MIT Press, 2001.

    Google Scholar 

  • S. Baase and A. Van Gelder, Computer Algorithms: Introduction to Design and Analysis, 3rd edn, Addison-Wesley, 1999.

    Google Scholar 

  • D. Kozen, The Design and Analysis of Algorithms, Springer-Verlag, 1992.

    Google Scholar 

  • U. Manber, Introduction to Algorithms: A Creative Approach, Addison-Wesley, 1989.

    Google Scholar 

  • A. V. Aho and J. D. Ullman, Foundations of Computer Science, W. H. Freeman & Co., 1995.

    Google Scholar 

  • M. Sipser, Introduction to the Theory of Computation, Brooks Cole, 1996.

    Google Scholar 

  • G. Brassard and P. Bratley, Fundamentals of Algorithmics, Prentice-Hall, 1995. Un libro più elementare è

    Google Scholar 

  • R. G. Dromey, How to Solve it by Computer, Prentice-Hall, 1982. A parte questi ci sono molti altri libri che si occupano di tipi particolari di algoritmi, ma che implicitamente contengono informazioni circa la metodologia algoritmica. Eccone alcuni

    Google Scholar 

  • S. Even, Graph Algorithms, Computer Science Press, 1979.

    Google Scholar 

  • G. H. Gönnet, Handbook of Algorithms and Data Structures, Addison-Wesley, 1984.

    Google Scholar 

  • T. C. Hu and M. T. Shing, Combinatorial Algorithms, Dover Publications, 2002.

    Google Scholar 

  • K. Mehlhorn, Data Structures and Algorithms 1: Sorting and Searching, Springer-Verlag, 1984.

    Google Scholar 

  • K. Mehlhorn, Data Structures and Algorithms 2: Graph Algorithms and NP-Completeness, Springer-Verlag, 1987.

    Google Scholar 

  • K. Mehlhorn, Data Structures and Algorithms 3: Multi-Dimensional Searching and Computational Geometry, Springer-Verlag, 1990.

    Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 1: Fundamental Algorithms, 3rd edn, Addison-Wesley, 1997.

    Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 2: Seminumerical Algorithms, 3rd edn, Addison-Wesley, 1997.

    Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 3: Sorting and Searching, 2nd edn, Addison-Wesley, 1998.

    Google Scholar 

  • E. L. Lawler, Combinatorial Optimization: Networks and Matroids, Dover Publications, 2001.

    Google Scholar 

  • C. H. Papadimitriou and K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall, 1982.

    Google Scholar 

  • E. M. Reingold Combinatorial Algorithms: Theory and Practice, Prentice-Hall, 1977.

    Google Scholar 

  • R. Sedgewick and P. Flajolet, An Introduction to the Analysis of Algorithms, Addison-Wesley, 1995.

    Google Scholar 

  • R. E. Tarjan, Data Structures and Network Algorithms, CBMS-NSF Regional Conf. Series in Appl. Math., SIAM Press, 1983. Due libri sulla geometria computazionale [pp. 103–5] sono il terzo volume del libro di Mehlhorn e

    Google Scholar 

  • F. P. Preparata and M. I. Shamos, Computational Geometry: An Introduction, Springer-Verlag, 1991. Un eccellente sondaggio è

    Google Scholar 

  • F. F. Yao, “Computational Geometry,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 343–389. L’algoritmo di Mergesort [pp. 107–8] è descritto in molti dei libri elencati, ma (come abbiamo già detto per il bubblesort) il volume di Knuth sull’ordinamento e la ricerca è di gran lunga il più completo. L’algoritmo greedy per la percorrenza di un albero [pp. 107–10] viene da

    Google Scholar 

  • R. C. Prim, “Shortest Connection Networks and Some Generalizations,” Bell Syst. Tech. J. 36 (1957), pp. 1389–1401. Un altro importante articolo sugli alberi dalla larghezza minima è

    Google Scholar 

  • J. B. Kruskal, Jr., “On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem,” Proc. Amer. Math. Soc. 7 (1956), pp. 48–50. Un articolo che si occupa sia di alberi che di algoritmi di percorso minimo è

    Article  MathSciNet  MATH  Google Scholar 

  • E. W. Dijkstra, “A Note on Two Problems in Connexion with Graphs,” Numerische Mathematik 1 (1959), pp. 269–271. La storia degli algoritmi per gli alberi, che evidentemente ebbe inizio prima di Prim e Kruskal, viene tracciata in

    Article  MathSciNet  MATH  Google Scholar 

  • R. L. Graham and P. Hell, “On the History of The Minimal Spanning Tree Problem,” Ann. Hist. Comput. 7 (1985), pp. 43–57. Ecco alcuni libri in cui la programmazione dinamica (chiamata planning dinamico nel nostro testo) [pp. 110–13] viene delineata con maggiore dettaglio

    Article  MathSciNet  MATH  Google Scholar 

  • R. E. Bellman, Dynamic Programming, Princeton University Press, 1957 (paperback edition, Dover Publications, 2003).

    Google Scholar 

  • S. E. Dreyfus and A. M. Law, The Art and Theory of Dynamic Programming, Academic Press, 1977.

    Google Scholar 

  • D. Bertsekas, Dynamic Programming and Optimal Control, 2nd edn, Athena Scientific, 2001. Due articoli molto influenti riguardanti i problemi algoritmici sui grafï sono

    Google Scholar 

  • R. E. Tarjan, “Depth First Search and Linear Graph Algorithms,” SIAM J. Comput. 1 (1972), pp. 146–160.

    Article  MathSciNet  MATH  Google Scholar 

  • J. E. Hopcroft and R. E. Tarjan, “Efficient Algorithms for Graph Manipulation,” Comm. Assoc. Comput. Mach. 16 (1973), pp. 372–378. Alcuni buoni sondaggi sugli algoritmi per i grafi appaiono in

    Google Scholar 

  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, 2nd edn, MIT Press, 2001.

    Google Scholar 

  • J. van Leeuwen, “Graph Algorithms,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 525–631. Gli heap [pp. 113–4] vengono discussi in grande dettaglio in quasi tutti i libri sugli algoritmi e le strutture dati. Si vedano ad esempio i libri elencati all’inizio delle note del Capitolo 2. Il seguente libro descrive algoritmi non distruttivi [pp. 114–5] e metodi di analisi appropriati

    Google Scholar 

  • C. Okasaki, Purely Functional Data Structures, Cambridge University Press, 1998. Gli algoritmi on-line [pp. 115–7] sono descritti in

    Google Scholar 

  • A. Borodin and R. El-Yaniv, Online Computation and Competitive Analysis, Cambridge University Press, 1998.

    Google Scholar 

Capitolo 5 Esistono diversi libri che si occupano di metodi e strumenti per la verifica di algoritmi e programmi. Eccone alcuni

  • Z. Manna, Mathematical Theory of Computation, McGraw-Hill, 1974.

    Google Scholar 

  • S. Alagić and M. A. Arbib, The Design of Well-Structured and Correct Programs, Springer-Verlag, 1978.

    Google Scholar 

  • J. W. de Bakker, Mathematical Theory of Program Correctness, Prentice-Hall International, 1980.

    Google Scholar 

  • J. Loeckx and K. Sieber, The Foundations of Program Verification, 2nd edn, John Wiley & Sons, 1987.

    Google Scholar 

  • N. Francez, Program Verification, Addison-Wesley, 1991.

    Google Scholar 

  • K. R. Apt and E.-R. Olderog, Verification of Sequential and Concurrent Programs, Springer-Verlag, 1991.

    Google Scholar 

  • Z. Manna and A. Pnueli, Temporal Verification of Reactive Systems: Safety, Springer-Verlag, 1995.

    Google Scholar 

  • E. M. Clarke, O. Grumberg, and D. A. Peled, Model Checking, MIT Press, 2000. Inoltre, i seguenti libri contengono capitoli informativi sulla correttezza e sulla verifica

    Google Scholar 

  • R. Bird, Programs and Machines: An Introduction to the Theory of Computation, John Wiley & Sons, 1976.

    Google Scholar 

  • J. M. Brady, The Theory of Computer Science: A Programming Approach, Chapman & Hall, 1977.

    Google Scholar 

  • S. A. Greibach, Theory of Program Structures: Schemes, Semantics, Verification, Springer-Verlag, 1975.

    Google Scholar 

  • E. V. Krishnamurthy, Introductory Theory of Computer Science, Springer-Verlag, 1983. A parte le riviste generiche già citate, le seguenti riviste più specifiche pubblicano molti articoli sulla correttezza algoritmica

    Google Scholar 

  • ACM Transactions on Programming Languages and Systems, a volte abbreviato in ACM Trans. Prog. Lang. Syst., o semplicemente TOPLAS; pubblicato dall’ACM.

    Google Scholar 

  • Acta Informatica, abbreviato in Acta Inf.; pubblicato da Springer-Verlag.

    Google Scholar 

  • Science of Computer Programming, abbreviato in Sci. Comput. Prog.; pubblicato da Elsevier.

    Google Scholar 

  • Journal of Automated Reasoning, abbreviato in J. Autom. Reas.; pubblicato da Kluwer Academic Publishers.

    Google Scholar 

  • IEEE Transactions on Software Engineering, abbreviato in IEEE Trans. Soft. Eng.; pubblicato da IEEE.

    Google Scholar 

  • Formal Aspects of Computing, abbreviato in Form. Aspects Comput.; pubblicato da Springer-Verlag.

    Google Scholar 

  • Software and System Modeling, abbreviato in Soft. Syst. Modeling, o semplicemente SoSyM; pubblicato da Springer-Verlag. Alcune delle storie sugli errori dei computer [p. 123] sono tra quelle regolarmente riportate in

    Google Scholar 

  • ACM Software Engineering Notes; pubblicato dal Special Interest Group on Software Engineering dell’ACM. Buoni posti dove leggere circa l’analisi sintattica e la gestione degli errori nella compilazione [pp. 125–7] sono

    Google Scholar 

  • A. V. Aho, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986.

    Google Scholar 

  • R. Allen, K. Kennedy, and J. R. Allen, Optimizing Compilers for Modern Architectures: A Dependence-Based Approach, Morgan Kaufmann, 2001.

    Google Scholar 

  • S. S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997. Buoni letture per approfondire il testing [pp. 128–9] sono

    Google Scholar 

  • C. Kaner, J. Falk, and H. Q. Nguyen, Testing Computer Software, 2nd edn, John Wiley & Sons, 1999.

    Google Scholar 

  • B. Hetzel, The Complete Guide to Software Testing, 2nd edn, John Wiley & Sons, 1993.

    Google Scholar 

  • R. V. Binder, Testing Object-Oriented Systems: Models, Patterns, and Tools, Addison-Wesley, 1999.

    Google Scholar 

  • B. Marick, The Craft of Software Testing: Subsystem Testing, Including Object-Based and Object-Oriented Testing, Prentice-Hall, 1994.

    Google Scholar 

  • G. J. Myers, The Art of Software Testing, John Wiley & Sons, 1979. L’aforisma della sirena [p. 129] appare a pagina 17 in

    Google Scholar 

  • G. D. Bergland, “A Guided Tour of Program Design Methodologies,” Computer 14 (1981), pp. 13–37. L’aforisma circa l’assenza/presenza di errori [p. 129] appare a pagina 6 di

    Article  Google Scholar 

  • E. W. Dijkstra, “Notes on Structured Programming,” in Structured Programming, Academic Press, 1972. La nozione di parziale correttezza [p. 131] appare in

    Google Scholar 

  • Z. Manna, “The Correctness of Programs,” J. Comput. Syst. Sci. 3 (1969), pp. 119–127. L’affermazione circa il tempo per il rilascio del software [p. 132] appare a pagina 1330 di

    Article  MathSciNet  Google Scholar 

  • D. L. Parnas, “Software Aspects of Strategic Defense Systems,” Comm. Assoc. Comput. Mach. 28 (1985), pp. 1326–1335. Articoli provocanti ma importanti circa l’(im)possibilità di provare la correttezza dei programmi sono

    Google Scholar 

  • R. A. De Millo, R. J. Lipton, and A. J. Perlis, “Social Processes and Proofs of Theorems and Programs,” Comm. Assoc. Comput. Mach. 22 (1979), pp. 271–280.

    Google Scholar 

  • J. H. Fetzer, “Program Verification: The Very Idea,” Comm. Assoc. Comput. Mach. 31 (1988), pp. 1048–1063. Sia il metodo dell’asserzione intermedia (invariante) per la prova di parziale correttezza [p. 133–5], che il metodo del convergente (a volte detto il metodo degli insiemi ben fondati) per la prova di terminazione sono dovuti a R. W. Floyd. Vennero descritti per la prima volta come metodi di dimostrazione nel seguente articolo, anche se le loro radici affondano nei lavori di Turing, von Neumann e altri

    Google Scholar 

  • R. W. Floyd, “Assigning Meanings to Programs,” Proc. Symp. on Applied Math. (vol. 19: “Mathematical Aspects of Computer Science”), American Math. Soc., Providence, RI, pp. 19–32, 1967. Tre articoli importanti e molto influenti che trattano dei metodi di Floyd sono

    Google Scholar 

  • C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Comm. Assoc. Comput. Mach. 12 (1969), pp. 576–583.

    MATH  Google Scholar 

  • S. Cook, “Soundness and Completeness of an Axiom System for Program Verification,” SIAM J. Comput. 7 (1978), pp. 70–90.

    Article  MathSciNet  MATH  Google Scholar 

  • E. M. Clarke, “Programming Language Constructs for which it is Impossible to Obtain Good Hoare-Like Axioms,” J. Assoc. Comput. Mach. 26 (1979), pp. 129–147. A parte i libri di verifïca consigliati prima, esistono eccellenti sondaggi sui metodi e sulle idee che hanno avuto origine nei lavori di Floyd, Hare e Cook

    Article  MathSciNet  MATH  Google Scholar 

  • K. R. Apt, “Ten Years of Hoare’s Logic: A Survey,” ACM Trans. Prog. Lang. Syst. 3 (1981), pp. 431–483.

    Article  MATH  Google Scholar 

  • P. Cousot, “Methods and Logics for Proving Programs,” in Handbook of Theoretical Computer Science, vol. B, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 841–993. Un algoritmo efficiente per trovare l’insieme minimo di checkpoint a cui applicare asserzioni nelle prove di correttezza [p. 134] appare in

    Google Scholar 

  • A. Shamir, “Finding Minimum Cutsets in Reducible Graphs,” SIAM J. Comput. 8 (1979), p. 645–655. Il fatto che un programma parzialmente corretto possa, in principio, sempre essere dimostrato corretto [p. 134]-una specie di risultato di completezzaviene stabilito nell’articolo di Cook di cui sopra. Il fatto che un programma totalmente corretto possa anch’esso essere dimostrato venne stabilito in

    Article  MathSciNet  MATH  Google Scholar 

  • D. Harel, “Arithmetical Completeness in Logics of Programs,” Proc. Int. Colloq. on Automata, Lang, and Prog., Lecture Notes in Computer Science, vol. 62, Springer-Verlag, pp. 268–288, 1978. Una grande quantità di informazioni su vari risultati di completezza possono essere trovate in

    Google Scholar 

  • D. Harel, D. Kozen, and J. Tiuryn, Dynamic Logic, MIT Press, 2000. Un buon libro per approfondire l’induzione matematica [p. 143] e i modi per usarla nella verifica dei programmi è

    Google Scholar 

  • M. Wand, Induction, Recursion, and Programming, Elsevier Science, 1980. La semplice soluzione iterativa del problema delle Torri di Hanoi [p. 145] appare in

    Google Scholar 

  • R. E. Allardice and A. Y. Fraser, “La tour d’Hanoï” Proc. Edinburgh Math. Soc., 2 (1884), pp. 50–53. I seguenti libri contengono approcci dettagliati alla verifica in corsa [p. 145–6], fornendo metodologie per costruire programmi ben strutturati e corretti

    Article  Google Scholar 

  • E. W. Dijkstra, A Discipline of Programming, Prentice-Hall, 1976.

    Google Scholar 

  • D. Gries, The Science of Programming, Springer-Verlag, 1981.

    Google Scholar 

  • J. C. Reynolds, The Graft of Programming, Prentice-Hall International, 1981.

    Google Scholar 

  • Z. Manna and R. Waldinger, The Deductive Foundations of Computer Programming, Addison-Wesley, 1993. La metodologia della progettazione per contratto [p. 147–8] viene spiegata in

    Google Scholar 

  • B. Meyer, Object-Oriented Software Construction, 2nd edn, Prentice-Hall, 1997.

    Google Scholar 

  • R. Mitchell and J. McKim, Design by Contract, by Example, Addison-Wesley, 2002. Ecco alcuni puntatori a lavori sulla verifica aiutata dal computer [p. 148–9]

    Google Scholar 

  • R. S. Boyer and J S. Moore, The Computational Logic Handbook, Academic Press, 1997.

    Google Scholar 

  • R. L. Constable et al., Implementing Mathematics with the Nuprl Proof Development System, Prentice-Hall, 1986.

    Google Scholar 

  • M. J. Gordon, A. J. R. G. Milner, and C. P. Wadsworth, Edinburgh LCF: A Mechanised Logic of Computation, Lecture Notes in Computer Science, vol. 78, Springer-Verlag, 1979. Il model checking [p. 151] viene discusso in dettaglio in

    Google Scholar 

  • K. L. McMillan, Symbolic Model Checking: An Approach to the State Explosion Problem, Kluwer Academic Publishers, 1993.

    Google Scholar 

  • E. M. Clarke, O. Grumberg, and D. A. Peled, Model Checking, MIT Press, 2000. Tre articoli di base sulle logiche dinamiche-[pp 150–1] sono

    Google Scholar 

  • A. Salwicki, “Formalized Algorithmic Languages,” Bull. Acad. Polon. Sci., Ser. Sci. Math. Astron. Phys. 18 (1970), pp. 227–232.

    MathSciNet  MATH  Google Scholar 

  • V. R. Pratt, “Semantical Considerations on Floyd-Hoare Logic,” Proc. 17th IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 109–121, 1976.

    Google Scholar 

  • M. J. Fischer and R. E. Ladner, “Prepositional Dynamic Logic of Regular Programs,” J. Comput. Syst. Sci. 18 (1979), pp. 194–211. L’intera area è presentata nel seguente sondaggio

    Article  MathSciNet  MATH  Google Scholar 

  • D. Harel, D. Kozen, and J. Tiuryn, Dynamic Logic, MIT Press, 2000. Buone letture per approfondire la sintesi dei programmi [p. 151] sono

    Google Scholar 

  • N. Dershowitz, The Evolution of Programs, Birkhäuser, 1983.

    Google Scholar 

  • Z. Manna und R. Waldinger, The Deductive Foundations of Computer Programming, Addison-Wesley, 1993. Due articoli sulle trasformazioni di programmi sono

    Google Scholar 

  • J. Darlington and R. M. Burstall, “A System which Automatically Improves Programs,” Proc. 3rd Int. Conf. on Artificial Intelligence, pp. 479–485, 1973.

    Google Scholar 

  • S. L. Gerhart, “Proof Theory of Partial Correctness Verification Systems” SIAM J. Comput. 5 (1976), pp. 355–377. Un sondaggio sui sistemi implementati in grado di aiutare nel testing è

    Article  MathSciNet  Google Scholar 

  • H. Partsch and R. Steinbrüggen, “Program Transformation Systems,” Comput. Surv. 15 (1983), pp. 199–236. Partendo dai lavori di molti predecessori, il problema dei quattro colori [p. 151–3] venne finalmente risolto da K. I. Appel e W. Haken, e venne annunciato per la prima volta in

    Article  Google Scholar 

  • K. I. Appel and W. Haken, “Every Planar Map is Four Colorable,” Bull. Amer. Math. Soc. 82 (1976), pp. 711–712. Un resoconto dettagliato del problema e della sua soluzione puo essere trovato in

    Article  MathSciNet  MATH  Google Scholar 

  • T. L. Saaty and P. C. Kainen, The Four Color Problem: Assaults and Conquest, Dover, 1986.

    Google Scholar 

Capitolo 6 Buona parte dei libri consigliati nelle note del Capitolo 4 sono rilevanti anche qui, visto che tipicamente spendono una considerevole quantità di tempo analizzando l’efncienza degli algoritmi che presentano. Quattro di loro vengono qui ri-citati, seguiti da altri libri. Contengono tutti una buona presentazione dell’argomento dell’emcienza algoritmica, con esempi di vari algoritmi

  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, 2nd edn, MIT Press, 2001.

    Google Scholar 

  • D. Kozen, The Design and Analysis of Algorithms, Springer-Verlag, 1992.

    Google Scholar 

  • A. V. Aho, J. E. Hopcroft, and J. D. Ullman, The Design and Analysis of Computer Algorithms, Addison-Wesley, 1974.

    Google Scholar 

  • E. Horowitz, S. Sahni, and S. Rajasekaran, Computer Algorithms, Computer Science Press, 1997.

    Google Scholar 

  • M. Hofri, Analysis of Algorithms: Computational Methods & Mathematical Tools, Oxford University Press, 1995.

    Google Scholar 

  • P. W. Purdom, Jr., and C. A. Brown, The Analysis of Algorithms, Holt, Rinehart & Winston, 1997.

    Google Scholar 

  • G. J. E. Rawlings, Compared to What?: An Introduction to the Analysis of Algorithms, W. H. Freeman & Co., 1991.

    Google Scholar 

  • R. Sedgewick and P. Flajolet, An Introduction to the Analysis of Algorithms, Addison-Wesley, 1995.

    Google Scholar 

  • C. H. Papadimitriou, Computational Complexity, Addison-Wesley, 1994. Un libro molto utile il cui titolo parla da solo è

    Google Scholar 

  • J. L. Bentley, Writing Efficient Programs, Prentice-Hall, 1982. Il suo autore, J. L. Bentley, ha tenuto una colonna sugli algoritmi emcienti nel Comm. Assoc. Comput. Mach.. Alcuni di questi appaiono in

    Google Scholar 

  • J. L. Bentley, Programming Pearls, 2nd edn, Addison-Wesley, 1999.

    Google Scholar 

  • J. L. Bentley, More Programming Pearls: Confessions of a Coder, Addison-Wesley, 1988. Due libri di testi che contengono molta della matematica usata tipicamente nell’analisi dell’emcienza algoritmica sono

    Google Scholar 

  • D. H. Greene and D. E. Knuth, Mathematics for the Analysis of Algorithms, 3rd edn, Birkhäuser, 1990.

    Google Scholar 

  • R. L. Graham, D. E. Knuth, and O. Patashnik, Concrete Mathematics: Foundation for Computer Science, 2nd edn, Addison-Wesley, 1994. Per quanto concerne le riviste, a parte quelle elencate nella sezione generale delle note, sono rilevanti anche quelle elencate nelle note del Capitolo 2. La storia della notazione a grande O (che a essere precisi dovrebbe essere chiamata a grande Omicron) [p. 163–6] e della sua adozione nell’informatica viene tracciata in

    Google Scholar 

  • D. E. Knuth, “Big Omicron and Big Omega and Big Theta,” SIGAGT News 8:2 (1976), pp. 18–24. Diverse varianti della ricerca binaria [pp. 166–9, 180–2], così come la loro analisi e le loro origini, appaiono nel volume di Knuth sulla ricerca e sull’ordinamento

    Article  Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 3: Sorting and Searching, 2nd edn, Addison-Wesley, 1998. Il treesort, il mergesort e l’heapsort [pp. 175–6] sono anch’essi analizzati in dettagli nel volume di Knuth, come anche il quicksort [p. 178]. Il quicksort fu inventato da C. A. R. Hoare e apparve per la prima volta in

    Google Scholar 

  • C. A. R. Hoare, “Quicksort,” Comput. J. 5 (1962), pp. 10–15. Un sondaggio dei metodi per l’analisi nel caso medio [pp. 178–9] è

    Article  MathSciNet  MATH  Google Scholar 

  • J. S. Vitter and P. Flajolet, “Average-Case Analysis of Algorithms and Data Structures,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 431–524. L’algoritmo dell’involucro convesso [pp. 183–7], a volte detto anche scan di Graham, appare in

    Google Scholar 

  • R. L. Graham, “An Efficient Algorithm for Determining the Convex Hull of a Finite Planar Set,” Inf. Proc. Lett. 1 (1972), pp. 132–133. Due libri dedicati alla geometria computazionale, che tra le altre cose contengono anche algoritmi per il problema dell’involucro convesso più efffcienti, sono

    Article  MATH  Google Scholar 

  • F. P. Preparata and M. I. Shamos, Computational Geometry: An Introduction, Springer-Verlag, 1991.

    Google Scholar 

  • K. Mehlhorn, Data Structures and Algorithms 3: Multi-Dimensional Searching and Computational Geometry, Springer-Verlag, 1990. Un sondaggio sull’argomento è

    Google Scholar 

  • F. F. Yao, “Computational Geometry,” in Handbook of Theoretical Computer Science vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 343–389. Algoritmi quasi lineari per il problema della copertura di un albero [p. 152] appaiono in

    Google Scholar 

  • M. L. Fredman and R. E. Tarjan, “Fibonacci Heaps and their Uses in Improved Network Optimization Algorithms,” J. Assoc. Comput. Mach. 34 (1987), pp. 596–615.

    Article  MathSciNet  Google Scholar 

  • H. N. Gabow, Z. Galis, T. H. Spencer, and R. E. Tarjan, “Efficient Algorithms for Finding Minimal Spanning Trees in Undirected and Directed Graphs,” Combinatorica 6 (1986) pp. 106–122.

    Google Scholar 

Capitolo 7 Il seguente libro è dedicato interamente all’intrattabilità. Si concentra sulla classe dei problemi NP-completi e sulle questioni a essa legate, e contiene una lista dettagliata dei numerosi problemi che nel 1979 si sapeva fossero NP-completi

  • M. R. Garey and D. S. Johnson, Computers and Intractability: A Guide to NP-Completeness, W. H. Freeman & Co., 1979. Tra il 1981 e il 1992 uno degli autori di questo libro, D. S. Johnson, scrisse periodicamente una colonna nel Journal of Algorithms, chiamata “The NP-Completeness Column: An Ongoing Guide” (ovvero, “La colonna della NP-completezza: una guida continua”). Insieme, il libro e la colonna fornirono una lista di centinaia di problemi che si sapevano essere NP-completi. Nei primi anni novanta era l’elenco più completo del suo genere. Molti libri contengono capitoli che discutono dei problemi intrattabili e della NP-completezza. Essi includono

    Google Scholar 

  • M. D. Davis, R. Sigal, and E. J. Weyuker, Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science, 2nd edn, Academic Press, 1994.

    Google Scholar 

  • J. E. Hopcroft, R. Motwani, and J. D. Ullman, Introduction to Automata Theory, Languages and Computation, 2nd edn, Addison-Wesley, 2001.

    Google Scholar 

  • E. Horowitz, S. Sahni, and S. Rajasekaran, Computer Algorithms, Computer Science Press, 1997.

    Google Scholar 

  • E. V. Krishnamurthy, Introductory Theory of Computer Science, Springer-Verlag, 1983.

    Google Scholar 

  • H. R. Lewis and C. H. Papadimitriou, Elements of the Theory of Computation, 2nd edn, Prentice-Hall, 1997.

    Google Scholar 

  • M. Machtey and P. Young, An Introduction to the General Theory of Algorithms, North Holland, Amsterdam, 1978.

    MATH  Google Scholar 

  • K. Mehlhorn, Data Structures and Algorithms 2: Graph Algorithms and NP-Completeness, Springer-Verlag, 1984.

    Google Scholar 

  • C. H. Papadimitriou and K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall, 1982.

    Google Scholar 

  • C. H. Papadimitriou, Computational Complexity, Addison-Wesley, 1994. Due eccellenti articoli espositivi sull’argomento dell’intrattabilità, che furono una sorgente di ispirazione nella preparazione di molte parti del Capitolo 7, sono

    Google Scholar 

  • H. R. Lewis and C. H. Papadimitriou, “The Efficiency of Algorithms,” Scientific American 238:1 (1978), pp. 96–109.

    Article  Google Scholar 

  • L. J. Stockmeyer and A. K. Chandra, “Intrinsically Difficult Problems,” Scientific American 240:5 (1979), pp. 140–159. I seguenti sondaggi, scritti da tre ricercatori che hanno dato contributi fondamentali alla materia di qeusto capitolo, sono molto informativi

    Article  Google Scholar 

  • M. O. Rabin, “Complexity of Computations,” Comm. Assoc. Comput. Mach. 20 (1977), pp. 625–633.

    MathSciNet  MATH  Google Scholar 

  • S. A. Cook, “An Overview of Computational Complexity,” Comm. Assoc. Comput. Mach. 26 (1983), pp. 401–408.

    Google Scholar 

  • R. M. Karp, “Combinatorics, Complexity, and Randomness,” Comm. Assoc. Comput. Mach. 29 (1986), pp. 98–109. Ecco un ulteriore sondaddio molto esaustivo

    MathSciNet  MATH  Google Scholar 

  • D. S. Johnson, “A Catalog of Complexity Classes,” in Handbook of Theoretical Computer Science vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 67–161. Le tabelle e il grafo che appaiono nelle Figure ??, ??, ?? e ??, [pp. 202–5] sono basati in parte su quelli che appaiono nel libro di Garey e Johnson e negli articoli di Scientfic American già citati. I seguenti articoli sono stati estremamente influenti nel porre le basi della teoria della complessità e nel riconoscere l’importanza della dicotomia tra tempo polinomiale e super-polinommiale [pp.202-4].

    Google Scholar 

  • M. O. Rabin, “Degree of Difficulty of Computing a Function and a Partial Ordering of Recursive Sets,” Technical Report No. 2, Hebrew University, Branch of Applied Logic, Jerusalem, 1960.

    Google Scholar 

  • A. Cobham, “The Intrinsic Computational Difficulty of Functions,” Proc. 1964 Int. Congress for Logic, Methodology, and Phil. of Sci., Y. Bar-Hillel, ed., North Holland, pp. 24–30, 1965.

    Google Scholar 

  • J. Edmonds, “Paths, Trees, and Flowers,” Canad. J. Math. 17 (1965), pp. 449–467.

    Article  MathSciNet  MATH  Google Scholar 

  • J. Hartmanis and R. E. Stearns, “On the Computational Complexity of Algorithms,” Trans. Amer. Math. Soc. 117 (1965), pp. 285–306.

    Article  MathSciNet  MATH  Google Scholar 

  • M. Blum, “A Machine Independent Theory of the Complexity of Recursive Functions,” J. Assoc. Comput. Mach. 14 (1967), pp. 322–336. L’identificazione della classe di problemi NP-completi [p.204], insieme al risultato storico (Teorema di Cook) che stabili l’NP-completezza del problema della soddisfacibilità [pp.170-1, 176] appare in

    Article  MathSciNet  MATH  Google Scholar 

  • S. A. Cook, “The Complexity of Theorem Proving Procedures,” Proc. 3rd ACM Symp. on Theory of Computing, ACM Press, pp. 151–158, 1971. Risultati simili furono ottenuti indipendentemente, ma un pochino più tardi, da L. A. Levin in

    Google Scholar 

  • L. A. Levin, “Universal Search Problems,” Problemy Peredaci Informacii 9 (1973), pp. 115–116 (in Russian). La traduzione inglese si trova in Problems of Information Transmission 9 (1973), pp. 265–6. L’importanza di queste scoperte fu riconosciuta nel seguente articolo molto importante, in cui diversi altri problemi (incluso quello del commesso viaggiatore, della colorazione con tre colori e dei percorsi Hamiltoniani [pp. 207–10]) furono dimostrati essere NP-completi usando riduzioni a tempo polinomiale

    MathSciNet  MATH  Google Scholar 

  • R. M. Karp, “Reducibility Among Combinatorial Problems,” in Complexity of Computer Computations, R. E. Miller and J. W. Thatcher, eds., Plenum Press, pp. 85–104, 1972. Il fatto che il problema del commesso viaggiatore rimane NP-completo non solo per grafi generici ma anche per reti di città con distanze euclidee venne dimostrato in

    Google Scholar 

  • C. H. Papadimitriou, “The Euclidean Traveling Salesman Problem is NP-Complete,” Theor. Comput. Sci. 4 (1977), pp. 237–244. Il fatto che il problemma della tabella degli orari fosse NP-completo [p. 210] venne dimostrato in

    Article  MathSciNet  MATH  Google Scholar 

  • S. Even, A. Itai, and A. Shamir, “On the Complexity of Timetable and Multicommodity Flow Problems,” SIAM J. Comput. 5 (1976), pp. 691–703. La filastrocca sul vecchio e coraggioso Duca di York (spesso chiamato erroneamente del grande Duca di York) [p. 214] puo essere trovata a pagina 138 di

    Article  MathSciNet  MATH  Google Scholar 

  • W. S. Baring-Gould and C. Baring-Gould, Annotated Mother Goose, Clarkson N. Potter, 1962. Il fatto che il problema se un numero è primo fosse in NP [p. 219] venne dimostrato in

    Google Scholar 

  • V. R. Pratt, “Every Prime has a Succint Certificate,” SIAM J. Comput. 4 (1975), pp. 214–220. L’algoritmo a tempo polinomiale per il problema del numero primo (l’algoritmo AKS) fu dimostrato in

    Article  MathSciNet  MATH  Google Scholar 

  • M. Agrawal, N. Kayal, and N. Saxena, “PRIMES is in P,” manuscript, August 2002. Questo articolo non è stato ancora pubblicato, ma puo essere facilmente trovatocosi corne moite sue descrizioni e anche alcune sue semplificazionisu Internet. (Si provi a cercare la frase “PRIMES is in P”.) Algoritmi di approssimazione [pp. 220–1] appaiono in molti dei libri e articoli sopra citati. I seguenti libri sono dedicati all’argomento

    Google Scholar 

  • V. V. Vazirani, Approximation Algorithms, Springer-Verlag, 2001.

    Google Scholar 

  • G. Ausiello, P. Crescenzi, G. Gambosi, V. Kann, A. Marchetti-Spaccamela, and M. Protasi, Complexity and Approximation: Combinatorial Optimization Problems and Their Approximability Properties, Springer-Verlag, 1999.

    Google Scholar 

  • Approximation Algorithms for NP-Hard Problems, D. S. Hochbaum, ed., Brooks Cole, 1996. L’algoritmo 1.5-volte-l’ottimo per il problema del commesso viaggiatore [p. 221] è dovuto a N. Christofides. L’algoritmo euristico per lo stesso problema, che è quasi altrettanto buono [p. 179], appare in

    Google Scholar 

  • R. M. Karp, “The Probabilistic Analysis of Partitioning Algorithms for the Traveling-Salesman Problem in the Plane,” Math. Oper. Res. 2 (1977), pp. 209–224. Un’eccellente collezione di articoli sul problema del commesso viaggiatore è

    Article  MathSciNet  MATH  Google Scholar 

  • The Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization, E. L. Lawler et al., eds., John Wiley & Sons, 1985. Il fatto che certi problemi NP-completi non possono essere approssimati almeno che P = NP [pp. 220–1] fu dimostrato nella seguente serie di articoli

    Google Scholar 

  • U. Feige, S. Goldwasser, L. Lovász, S. Safra, and M. Szegedy, “Approximating Clique is Almost NP-Complete,” J. Assoc. Comput. Mach., 43 (1996), pp. 268–292.

    Article  MATH  Google Scholar 

  • S. Arora and S. Safra, “Probabilistic Checking of Proofs: A New Characterization of NP,” J. Assoc. Comput. Mach., 45 (1998), pp. 70–122.

    Article  MathSciNet  MATH  Google Scholar 

  • S. Arora, C. Lund, R. Motwani, M. Sudan, and M. Szegedy, “Proof Verification and Intractability of Approximation Problems” J. Assoc. Comput. Mach. 45 (1998), pp. 501–555. La prova che stabilisce questo fatto per la colorazione dei grafi [pp. 222–3] appare in

    Article  MathSciNet  MATH  Google Scholar 

  • C. Lund and M. Yannakakis, “On the Hardness of Approximating Minimization Problems,” J. Assoc. Comput. Mach. 41 (1994), pp. 960–981. Un risultato di inapprossimabilità influente per la colorazione dei grafi appare in

    Article  MathSciNet  MATH  Google Scholar 

  • M. R. Garey and D. S. Johnson, “The Complexity of Near-Optimal Graph Coloring,” J. Assoc. Comput. Mach. 23 (1976), pp. 43–49. La prima prova che un problema di interesse ha un limite inferiore temporale esponenziale [p. 180] apparve in

    Article  MathSciNet  MATH  Google Scholar 

  • A. R. Meyer and L. J. Stockmeyer, “The Equivalence Problem for Regular Expressions with Squaring Requires Exponential Time,” Proc. 13th Ann. Symp. on Switching and Automata Theory, IEEE Press, pp. 125–129, 1972. Il fatto che gli scacchi generalizzati possano essere dimostrati essere intrattabili [p. 220] è stato evidenziato, rispettivamente, in

    Google Scholar 

  • A. S. Fraenkel and D. Lichtenstein, “Computing a Perfect Strategy for n x n Chess Requires Time Exponential in n,” J. Combinatorial Theory, Series A31 (1981), pp. 199–214.

    Google Scholar 

  • J. M. Robson, “N by N Checkers is Exptime Complete,” SIAM J. Comput. 13 (1984), pp. 252–267. Il problema dei blocchi stradali [pp. 220–1] fu descritto in un articolo di Stockmeyer e Chandra in Scientific America già citato e fu dimostrato essere intrattabile in

    Article  MathSciNet  MATH  Google Scholar 

  • L. J. Stockmeyer and A. K. Chandra, “Provably Difficult Combinatorial Games,” SIAM J. Comput. 8 (1979), pp. 151–174. La logica dinamica proposizionale [p. 224] fu definita e dimostrata essere intrattabile in

    Article  MathSciNet  MATH  Google Scholar 

  • M. J. Fischer and R. E. Ladner, “Prepositional Dynamic Logic of Regular Programs,” J. Comput. Syst. Sci. 18 (1979), pp. 194–211. Il fatto che 1’aritmetica di Presburger richieda un tempo doppiamente esponenziale [p. 225] fu mostrato in

    Article  MathSciNet  MATH  Google Scholar 

  • M. J. Fischer and M. O. Rabin, “Super-Exponential Complexity of Presburger Arithmetic,” in Complexity of Computation, R. M. Karp, ed., Amer. Math. Soc., Providence, RI, pp. 27–41, 1974. Il fatto che il WS1S richieda un tempo non elementare [p. 225] fu mostrato in

    Google Scholar 

  • A. R. Meyer, “Weak Monadic Second Order Theory of Successor is not Elementary Recursive,” in Logic Colloquium, R. Parikh, ed., Lecture Notes in Mathematics, vol. 453, Springer-Verlag, pp. 132–154, 1975. Un buon sondaggio sui limiti superiori e inferiori delle complessità di determinati problemi di soddisfacibilità è

    Google Scholar 

  • J. Ferrante and C. W. Rackoff, The Computational Complexity of Logical Theories, Lecture Notes in Mathematics, vol. 718, Springer-Verlag, 1979. Il metodo del simplesso per la programmazione lineare [p. 227] fu scoperto nei primi anni cinquanta da G. B. Dantzig e un suo resoconto dettagliato puó essere trovato in

    Google Scholar 

  • G. B. Dantzig, Linear Programming and Extensions, Princeton University Press, 1963. Il primo algoritmo a tempo polinomiale per il problema apparve nel seguente articolo molto influente

    Google Scholar 

  • L. G. Khachiyan, “A Polynomial Algorithm in Linear Programming,” Doklady Akademiia Nauk SSSR 244 (1979), pp. 1093–1096 (in Russian). English translation in Soviet Mathematics Doklad 20 (1979), pp. 191–4. Un altro algoritmo a tempo polinomiale per la programmazione lineare, il quale si comporta meglio di quello di Khachiyan, apparve in

    MathSciNet  MATH  Google Scholar 

  • N. Karmarkar, “A New Polynomial-Time Algorithm for Linear Programming,” Combinatorial 4 (1984), pp. 373–395.

    Article  MathSciNet  MATH  Google Scholar 

Capitolo 8 Storicamente, l’interesse per la non computabilità e l’indecidibilità è dovuto a un piano del grande matematico David Hilbert. All’inizio del secolo scorso Hilbert propose che tutti i problemi matematici venissero codificati in un formalismo logico adeguato, e che venisse trovato un algoritmo per determinare la sua veridicità. Che cio fosse essenzialmente impossibile venne dimostrato nel 1932 da K. Gödel nel seguente articolo storico, il quale dimostrava che la verità, nel calcolo di primo ordine, non era neanche parzialmente decidibile (un risultato spesso noto corne il Teorema dell’Incompletezza di Gödel)

  • K. Gödel, “Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme, I,” Monatshefte für Mathematik und Physik 38 (1931), pp. 173–198. Una traduzione inglese di questo articolo, intitolato “On formally Undecidable Propositions of Principia Matematica and Related Systems” (ovvero, “Sulla formale indecidibilità delle proposizioni in Principia Matematica e sistemi correlati”), appare nel seguente libro, il quale costituisce una collezione di molti articoli pionieristici sull’argomento di questo capitolo

    Article  Google Scholar 

  • The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions, M. Davis, ed., Raven Press, 1965. Un chiara esposizione dell’argomento di questo, e del prossimo capitolo, è

    Google Scholar 

  • B. A. Trakhtenbrot, Algorithms and Automatic Computing Machines, D. C. Heath & Co., 1963. Molti libri contengono materiale su problemi indecidibili e non computabili. Eccone alcuni

    Google Scholar 

  • R. Bird, Programs and Machines: An Introduction to the Theory of Computation, John Wiley & Sons, 1976.

    Google Scholar 

  • G. S. Boolos, J. P. Burgess, and R. C. Jeffrey, Computability and Logic, 4th edn, Cambridge University Press, 2002.

    Google Scholar 

  • W. S. Brainerd and L. H. Landweber, Theory of Computation, John Wiley & Sons, 1974.

    Google Scholar 

  • J. M. Brady, The Theory of Computer Science: A Programming Approach, Chapman & Hall, 1977.

    Google Scholar 

  • N. J. Cutland, Computability: An Introduction to Recursive Function Theory, Cambridge University Press, 1980.

    Google Scholar 

  • G. Rozenberg and A. Salomaa, Cornerstones of Undecidability, Prentice-Hall, 1994.

    Google Scholar 

  • M. D. Davis, R. Sigal, and E. J. Weyuker, Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science, 2nd edn, Academic Press, 1994.

    Google Scholar 

  • F. C. Hennie, Introduction to Computability, Addison-Wesley, 1977.

    Google Scholar 

  • J. E. Hopcroft, R. Motwani, and J. D. Ullman, Introduction to Automata Theory, Languages and Computation, 2nd edn, Addison-Wesley, 2001.

    Google Scholar 

  • A. J. Kfoury, R. N. Moll, and M. A. Arbib, A Programming Approach to Computability, Springer-Verlag, 1982.

    Google Scholar 

  • E. V. Krishnamurthy, Introductory Theory of Computer Science, Springer-Verlag, 1983.

    Google Scholar 

  • H. R. Lewis and C. H. Papadimitriou, Elements of the Theory of Computation, 2nd edn, Prentice-Hall, 1997.

    Google Scholar 

  • M. Machtey and P. Young, An Introduction to the General Theory of Algorithms, North Holland, 1978.

    Google Scholar 

  • R. Sommerhaider and S. C. van Westrhenen, The Theory of Computability: Programs, Machines, Effectiveness and Feasibility, Addison-Wesley, 1988.

    Google Scholar 

  • R. W. Floyd and R. Beigel, The Language of Machines: An Introduction to Computability and Formal Languages, W. H. Freeman & Co., 1994. Il trattamento matematico più dettagliato e completo della teoria delle funzioni ricorsive, la quale include la non computabilità come sotto-area, è

    Google Scholar 

  • H. Rogers, Theory of Recursive Functions and Effective Computability, McGraw-Hill, 1967 (reprinted by MIT Press, 1987). Tre libri molto influenti sono

    Google Scholar 

  • S. C. Kleene, Introduction to Metamathematics, North Holland, 1952 (eighth reprint, 1980).

    Google Scholar 

  • M. Davis, Computability and Unsolvability, McGraw-Hill, 1958. (Second edition published by Dover Publications in 1982).

    Google Scholar 

  • M. L. Minsky, Computation: Finite and Infinite Machines, Prentice-Hall, 1967. Il seguente libro contiene un resoconto alquanto inusuale e divertente dell’argomento

    Google Scholar 

  • D. R. Hofstadter, Gödel, Escher, Bach. Ein endloses geflochtenes Band, 17. Auflage, Klett-Cotta, 2006. Oltre alle riviste menzionate nella sezione generale di queste note, le seguenti riviste contengono articoli sulla teoria delle funzioni ricorsive, e quindi anche sull’indecidibilità e sulla non computabilità’

    Google Scholar 

  • Journal of Symbolic Logic, abbreviato in J. Symb. Logic, o a volte semplicemente JSL; pubblicato dall’Association for Symbolic Logic.

    Google Scholar 

  • Zeitschrift für Mathematische Logik und Grundlagen der Mathematik, abbreviato in Zeitschr. Math. Logik und Grundlagen Math., o a volte semplicemente ZML; pubblicato Berlino da VEB Deutscher Verlag der Wissenschaften. La citazione del Time Magazine [p. 237] è di E. Baxter, editore del Personal Software magazine, e apparve sulle pagine 44–45 del numero del 16 Aprile, 1984. I problemi di piastrellamento e di domino [pp. 239–42] furono introdotti da H. Wang nel seguente articolo, il quale contiene anche la dimostrazione dell’indecidibilità della versione con restrizioni

    Google Scholar 

  • H. Wang, “Proving Theorems by Pattern Recognition,” Bell Syst. Tech. J. 40 (1961), pp. 1–42. La variante senza restrizioni fu provata indecidibile in

    Google Scholar 

  • R. Berger, “The Undecidability of the Domino Problem,” Memoirs Amer. Math. Soc. 66 (1966). Un libro affascinante che parla di piastrellamenti del piano è

    Google Scholar 

  • B. Grünbaum and G. C. Shephard, Tilings and Patterns, W. H. Freeman & Co., 1987. I due risultati che affermano che il problema del serpente domino è indecidibile in metá del piano ma decidibile nel piano intero [p. 243], apparvero, rispettivamente, in

    Google Scholar 

  • H.-D. Ebbinghaus, “Undecidability of Some Domino Connectability Problems,” Zeitschr. Math. Logik und Grundlagen Math. 28 (1982), pp. 331–336.

    Article  MathSciNet  MATH  Google Scholar 

  • Y. Etzion-Petrushka, D. Harel, and D. Myers, “On the Solvability of Domino Snake Problems,” Theoret. Comput. Sci. 131 (1994), pp. 243–269. Il secondo articolo elencato contiene anche i risultati di indecidibilità più forti per i serpenti domino [p. 243], incluso quello che parla della rimozione di un solo punto. Il problema della corrispondenza delle parole [pp. 244–5], a volte chiamato Problema della corrispondenza di Post, o semplicemente PCP, fu introdotto e provato indecidibile da E. L. Post in

    Article  MathSciNet  Google Scholar 

  • E. L. Post, “A Variant of a Recursively Unsolvable Problem,” Bull. Amer. Math. Soc. 52 (1946), pp. 264–268. Il problema di decidere l’equivalenza di definizioni sintatiche di linguaggi di programmazione [pp. 244–5] è meglio conosciuto come il problema dell’equivalenza di grammatiche liberi da contesto e fu provato indecidibile in

    Article  MathSciNet  MATH  Google Scholar 

  • Y. Bar-Hillel, M. Perles, and E. Shamir, “On Formal Properties of Simple Phrase Structure Grammars,” Zeit. Phonetik, Sprachwiss. Kommunikationsforsch. 14 (1961), pp. 143–172. Il fatto che la verifica dei programmi sia non computabile [pp. 245–7] segue dal fatto che la verità dei predicati espressi nel calcolo di primo ordine è indecidibile, ed è dunque dovuto, in essenza, a K. Gödel, come detto all’inizio di questa sezione. II seguente articolo discute Palgoritmo 3x + 1 e le sue varianti in dettaglio

    MathSciNet  MATH  Google Scholar 

  • J. C. Lagarias, „The 3x + 1 Problem and its Generalizations,“ Amer. Math. Monthly 92 (1985), S. 3–23. L’autore, Lagarias, ha anche scritto un manoscritto non pubblicato intitolato“3x+ 1 Problem Annotated Bibliography”. Il fatto che il problema della terminazione sia indecidibile [pp. 247–9, 250–4] è dovuto in essenza a A. Turing e al suo articolo estremamente importante

    Article  MathSciNet  MATH  Google Scholar 

  • A. Turing, “On Computable Numbers with an Application to the Entscheidungsproblem,” Proc. London Math. Soc. 42 (1936), pp. 230–265. Corrections appeared in: ibid., 43 (1937), pp. 544–6. Il Teorema di Rice [p. 249] viene da

    Article  MathSciNet  Google Scholar 

  • H. G. Rice, “Classes of Recursively Enumerable Sets and Their Decision Problems,” Trans. Amer. Math. Soc. 74 (1953), pp. 358–366. Il libro di Roger, precedentemente citato, contiene resoconti dettagliati sui risultati ottenuti circa l’enumerabilità ricorsiva [pp. 257–9] e sulle gerarchie di problemi indecidibili, e sul fatto che il problema della totalità non è r.e. [p. 259]. Molti di questi risultati sono basati su un importante lavoro di S. C. Kleene proposto in

    Article  MathSciNet  MATH  Google Scholar 

  • S. C. Kleene, “Recursive Predicates and Quantifiers,” Trans. Amer. Math. Soc. 53 (1943), pp. 41–73. Il fatto che il PDL con ricorsione sia altamente indecidibile [p. 260–1] fu dimostrato in

    Article  MathSciNet  MATH  Google Scholar 

  • D. Harel, A. Pnueli, and J. Stavi, “Prepositional Dynamic Logic of Non Regular Programs,” J. Comput. Syst. Sci. 26 (1983), pp. 222–243. I problemi di domino ricorrenti sono stati definiti e dimostrati essere altamente indecidibili in

    Article  MathSciNet  MATH  Google Scholar 

  • D. Harel, “Effective Transformations on Infinite Trees, with Applications to High Undecidability, Dominoes, and Fairness,” J. Assoc. Comput. Mach. 33 (1986), pp. 224–248. L’alta indecidibilità dell’aritmetica di secondo ordine [pp. 262–4] e di molti fatti correlati sono stati stabiliti nell’articolo di Kleene citato sopra.

    Article  MathSciNet  Google Scholar 

Capitolo 9 Il materiale di questo capitolo viene tradizionalmente trattato insieme a quello del capitolo precedente. Di conseguenza, l’elenco dei libri e delle riviste menzionato all’inizio delle note del Capitolo 8 sono utili anche qui. La macchine di Turing [pp. 276–7] furono inventate da Alan Turing e furono per la prima volta descritte nell’articolo fondamentale

  • A. Turing, “On Computable Numbers with an Application to the Entscheidungsproblem,” Proc. London Math. Soc. 42 (1936), pp. 230–265. Correzioni apparirono in: ibid., 43 (1937), pp. 544–6. La Tesi Church-Turing [pp. 282–3] prende il nome da Alonzo Church e Alan Turing. Le idee di base furono presentate nell’articolo di Turing e nel seguente articolo fondamentale

    Article  MathSciNet  Google Scholar 

  • A. Church, “An Unsolvable Problem of Elementary Number Theory,” Amer. J. Math. 58 (1936), pp. 345–363. Resoconti storici affascinanti raccontano dell’evoluzione del lambda calculus, della teoria delle funzioni ricorsive e della Tesi Church/Turing, e sono presenti in

    Article  MathSciNet  Google Scholar 

  • S. C. Kleene, “Origins of Recursive Function Theory,” Ann. Hist. Comput. 3 (1981), pp. 52–67.

    Article  MathSciNet  MATH  Google Scholar 

  • M. Davis, “Why Gödel Didn’t Have Church’s Thesis,” Inf. and Cont. 54 (1982), pp. 3–24.

    Article  MATH  Google Scholar 

  • J. B. Rosser, “Highlights of the History of the Lambda-Calculus,” Ann. Hist. Comput. 6 (1984), pp. 337–349. Un approccio interessante alla modifïca della tesi per catturare le computazioni che terminano nei linguaggi di programmazione reali apparve in

    Article  MathSciNet  MATH  Google Scholar 

  • Y. Gurevich, “Logic and the Challenge of Computer Science,” in Current Trends in Theoretical Computer Science, E. Börger, ed., Computer Science Press, 1988. Il seguente articolo propone una definizione di query computabili per database [pp. 306–7]. In realtà si applica a buona parte dei tipi di strutture, inclusi insiemi, alberi, grafï e strutture di cartelle gerarchiche. Dunque, implicitamente stabilisce una tesi CT appropriata per le computazioni su strutture

    Google Scholar 

  • A. K. Chandra and D. Harel, “Computable Queries for Relational Data Bases,” J. Comput. Syst. Sci. 21 (1980), pp. 156–178. Il lambda calculus [p 283] fu il risultato del lavoro di Church e Kleene, e apparve esplicitamente in

    Article  MathSciNet  MATH  Google Scholar 

  • S. C. Kleene, “A Theory of Positive Integers in Formal Logic,” Amer. J. Math. 57 (1935), pp. 153–173, 219–44. Venne descritto in grande dettagli in

    Article  MathSciNet  Google Scholar 

  • H. P. Barendregt, The Lambda Calculus: Its Syntax and Semantics, 2nd edn, North Holland, 1984. I sistemi di produzione di Post [p. 283] apparvero nel seguente articolo molto importante

    Google Scholar 

  • E. L. Post, “Formal Reductions of the General Combinatorial Decision Problem,” Amer. J. Math. 65 (1943), pp. 197–215. La definizione di funzione ricorsive di Kleene [p. 283] si basa su quella di Gödel, e apparve in

    Article  MathSciNet  MATH  Google Scholar 

  • S. C. Kleene, “General Recursive Functions of Natural Numbers,” Math. Ann. 112 (1936), pp. 727–742. Tre dei primi articoli a dimostrare l’equivalenza di questi formalismi furono

    Article  MathSciNet  Google Scholar 

  • S. C. Kleene, “λ-Definability and Recursiveness,” Duke Math. J. 2 (1936), pp. 340–353.

    Article  MathSciNet  Google Scholar 

  • E. L. Post, “Finite Combinatory Processes—Formulation 1,” J. Symb. Logic 1 (1936), pp. 103–105.

    Article  MATH  Google Scholar 

  • A. M. Turing, “Computability and A-Definability,” J. Symb. Logic 2 (1937), pp. 153–163. Come già detto, il riferimento definitivo sulle funzioni ricorsive e sulle loro proprietà è

    Article  MATH  Google Scholar 

  • H. Rogers, Theory of Recursive Functions and Effective Computability, McGraw-Hill, 1967 (reprinted by MIT Press, 1987). Molte varianti delle macchine di Turing e, in particolare, le macchine multi nastro e quelle non deterministiche [pp. 284–5], così come la riduzione da nastri infiniti a due vie a nastri infiniti a una via [pp. 285–6], sono descritti in molto libri, il più influente dei quali è il seguente (il quale, come già detto, venne pubblicato più di 20 anni dopo in una seconda edizione)

    Google Scholar 

  • J. E. Hopcroft and J. D. Ullman, Introduction to Automata Theory, Languages and Computation, Addison-Wesley, 1979. I programmi contatori, a volte detti macchine contatrici [p. 305–6], sono descritti in molti dei libri già citati, ma costituiscono una parte particolarmente importante di

    Google Scholar 

  • M. L. Minsky, Computation: Finite and Infinite Machines, Prentice-Hall, 1967. Il fatto che bastino due contatori [p. 308] viene dimostrato nel libro di Minsky, e originalmente in

    Google Scholar 

  • M. L. Minsky, “Recursive Unsolvability of Post’s Problem of ‘Tag’ and Other Topics in the Theory of Tring Machines,” Annals Math. 74 (1961), pp. 437–455. Una dimostrazione più elegante (la quale ha fornito le basi per il trattamente dell’argomento in questo testo) venne data in

    Article  MathSciNet  MATH  Google Scholar 

  • P. C. Fischer, “Turing Machines with Restricted Memory Access,” Inf. and Cont. 9 (1966), pp. 364–379. Un articolo importante, correlato a sotto-linguaggi particolarmente interessanti del linguaggio dei programmi contatori (una gerarchia di varianti ricorsive primitive), è

    Article  MATH  Google Scholar 

  • A. R. Meyer and R. Ritchie, “The Complexity of Loop Programs,” Proc. ACM National Conf, ACM Press, pp. 465–469, 1967. Il concetto di un programma universale [pp. 292–4] è, ancora una volta, dovuto ad Alan Turing. Nel suo articolo del 1936 costruì una macchina di Turing universale e ne discusse l’importanza. Cio che segue è un’esposizione delle macchine di Turing e di argomenti correlati

    Google Scholar 

  • J. E. Hopcroft, “Turing Machines,” Scientific American 250:5 (1984), pp. 70–80. Un buon sondaggio di macchine e simulazioni tra loro è fornito in

    Article  Google Scholar 

  • P. van Emde Boas, “Machine Models and Simulations,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 1–66. Il collegamento tra le macchine di Turing e le classi di complessità come il PTIME venne fatto in alcuni lavori sulla teoria della complessità; per esempio, in

    Google Scholar 

  • J. Hartmanis and R. E. Stearns, “On the Computational Complexity of Algorithms,” Trans. Amer. Math. Soc. 117 (1965), pp. 285–306. La classe NP è stata definita usando macchine di Turing non deterministiche [pp. 297–8] fin dall’articolo originale di Cook

    Article  MathSciNet  MATH  Google Scholar 

  • S.A. Cook, “The Complexity of Theorem Proving Procedures,” Proc. 3rd ACM Symp. on Theory of Computing, ACM Press, pp. 151–158, 1971. La riduzione del problema della terminazione a un problema di piastrellamento di meta del piano si basa sulla prova originale fornita in

    Google Scholar 

  • H. Wang, “Proving Theorems by Pattern Recognition,” Bell Syst. Tech. J. 40 (1961), pp. 1–42. Gli automi finiti [pp. 302–4] sembrano avère avuto origine all’interno del lavoro pionieristico sulla modellazione delle attività nervöse contenuto in

    Google Scholar 

  • W. S. McCulloch and W. Pitts, “A Logical Calculus of the Ideas Immanent in Nervous Activity,” Bull. Math. Biophysics 5 (1943), pp. 115–133. Due articoli importanti sono

    Article  MathSciNet  MATH  Google Scholar 

  • S. C. Kleene, “Representation of Events in Nerve Nets and Finite Automata,” in Automata Studies, C. E. Shannon and J. McCarthy, eds., Ann. Math. Studies 34 (1956), pp. 3–41. (Earlier version: RAND Research Memorandum RM-704, 1951.)

    Google Scholar 

  • M. O. Rabin and D. Scott, “Finite Automata and their Decision Problems,” IBM J. Res. 3 (1959), pp. 115–125. La dimostrazione dei limiti degli automi finiti mediante la tecnica del buco per i piccioni [p. 304] (il che portó al cosiddetto lemma della pompa) si basa su dimostrazioni presenti in

    Article  MathSciNet  Google Scholar 

  • Y. Bar-Hillel, M. Perles, and E. Shamir, “On Formal Properties of Simple Phrase Structure Grammars,” Zeit. Phonetik, Sprachwiss. Kommunikationsforsch. 14 (1961), pp. 143–172. Gli automi pushdown [p. 306] apparvero per la prima volta in forma esplicita in

    MathSciNet  MATH  Google Scholar 

  • A. G. Oettinger, “Automatic Syntactic Analysis and the Pushdown Store,” Proc. Symp. in Applied Math. 12, Amer. Math. Soc., pp. 104–129, 1961. Diversi articoli importanti sull’argomento furono scritti negli ultimi anni cinquanta da N. Chomsky, tra cui

    Google Scholar 

  • N. Chomsky, “Three Models for the Description of Language,” IRE Trans. Inf. Theory 2 (1956), pp. 113–124.

    Article  MATH  Google Scholar 

  • N. Chomsky, “On Certain Formal Properties of Grammars,” Inf. and Cont. 2 (1959), pp. 137–167. Il fatto che l’equivalenza dei DPDA sia decidibile [p. 306] venne dimostrato in

    Article  MathSciNet  MATH  Google Scholar 

  • G. Sénizergues, “The Equivalence Problem for Deterministic Pushdown Automata is Decidable,” Proc. Int. Colloq. on Automata, Lang. and Prog., Lecture Notes in Computer Science, vol. 1256, Springer-Verlag, pp. 671–681, 1997. Un rafforzamento di questo risultato apparve in

    Google Scholar 

  • C. Sterling, “An Introduction to Decidability of DPDA Equivalence,” Proc. 21st Conf. on Foundations of Software Technology and Theoretical Computer Science, Lecture Notes in Computer Science, vol. 2245, Springer-Verlag, pp. 42–56, 2001.

    Google Scholar 

  • C. Sterling, “Deciding DPDA Equivalence is Primitive Recursive,” Proc. Int. Golloq. on Automata, Lang. and Prog., Lecture Notes in Computer Science, vol. 2380, Springer-Verlag, pp. 821–832, 2002. Un sondaggio storico particolarmente dettagliato e illuminante sullo sviluppo dei linguaggi formali e sulla teoria degli automi è

    Google Scholar 

  • S. A. Greibach, “Formal Languages: Origins and Directions,” Ann. Hist. Comput. 3 (1981), pp. 14–41. Molti dei libri citati nelle note per il Capitolo 8 contengono trattamenti approfonditi degli automi finiti, degli automi pushdown e dei relativi formalismi. Ci sono anche molti altri libri dedicati interamente agli automi e alla teoria dei linguaggi formali. Essi includono

    Article  MathSciNet  MATH  Google Scholar 

  • S. Ginsburg, Algebraic and Automata-Theoretic Properties of Formal Languages, North Holland, 1975.

    Google Scholar 

  • M. A. Harrison, Introduction to Formal Language Theory, Addison-Wesley, 1978.

    Google Scholar 

  • A. Salomaa, Jewels of Formal Language Theory, Computer Science Press, 1981.

    Google Scholar 

Capitolo 10 Questo capitolo si divide in diverse parti: il parallelismo (ovvero, il risolvere problemi algoritmici in maniera efficiente usando processi paralleli), la concorrenza (ovvero, la progettazione e il comportamento di protocolli e sistemi concorrenti) e la computazione quantica e molecolare. Ecco alcuni libri che si occupano di algoritmi paralleli

  • J. JaJa, An Introduction to Parallel Algorithms, Addison-Wesley, 1992.

    Google Scholar 

  • F. T. Leighton, Introduction to Parallel Algorithms and Architectures: Arrays, Trees, Hypercubes, Morgan Kaufmann, 1992.

    Google Scholar 

  • S. G. Akl, Parallel Computation: Models and Methods, Prentice-Hall, 1996.

    Google Scholar 

  • M. J. Quinn, Designing Efficient Algorithms for Parallel Computers, McGraw-Hill, 1987.

    Google Scholar 

  • I. Parberry, Parallel Complexity Theory, John Wiley & Sons, 1987.

    Google Scholar 

  • A. Gibbons and W. Rytter, Efficient Parallel Algorithms, Cambridge University Press, 1988. Ecco alcuni libri che parlano della specifica e progettazione di protocolli concorrenti

    Google Scholar 

  • M. Ben-Ari, Principles of Concurrent Programming, Prentice-Hall, 1982.

    Google Scholar 

  • R. E. Filman and D. P. Friedman, Coordinated Computing: Tools and Techniques for Distributed Software, McGraw-Hill, 1984.

    Google Scholar 

  • G. R. Andrews, Concurrent Programming: Principles and Practice, Pearson Education, 1991.

    Google Scholar 

  • N. Lynch, Distributed Algorithms, Morgan Kaufmann, 1997.

    Google Scholar 

  • R. Milner, Communication and Concurrency, Prentice-Hall, 1989.

    Google Scholar 

  • C. A. R. Hoare, Communicating Sequential Processes, Prentice-Hall, 1985.

    Google Scholar 

  • R. Milner, Communicating and Mobile Systems: The Pi-Calculus, Cambridge University Press, 1999.

    Google Scholar 

  • K. M. Chandy and J. Misra, Parallel Program Design: A Foundation, Addison-Wesley, 1988.

    Google Scholar 

  • F. Andre, D. Herman, and J.-P. Verjus, Synchronization of Parallel Programs, MIT Press, 1985.

    Google Scholar 

  • E. V. Krishnamurthy, Parallel Processing: Principles and Practice, Addison-Wesley, 1989. I seguenti libri contengono articoli che hanno a che vedere con il parallelismo e la concorrenza

    Google Scholar 

  • Concurrency Verification: Introduction to Compositional and Noncompositional Methods, W.-P. de Roever et al., eds., Cambridge University Press, 2001.

    Google Scholar 

  • Algorithms, Software and Hardware of Parallel Computers, V. E. Kotov and J. Miklosko, eds., Springer-Verlag, 1984.

    Google Scholar 

  • Logics and Models of Concurrent Systems, K. R. Apt, ed., NATO ASI Series, vol. 13, Springer-Verlag, 1985.

    Google Scholar 

  • The Origins of Concurrent Programming: From Semaphores to Remote Procedure Calls, P. Brinch Hansen, ed., Springer-Verlag, 2002. Un buon libro che discute di computer paralleli è

    Google Scholar 

  • R. W. Hockney and C. R. Jesshope, Parallel Computers 2: Architecture, Programming and Algorithms, 2nd edn, Adam Hilger Ltd, 1988. Ecco alcuni libri che discutono di computazione quantica e molecolare

    Google Scholar 

  • C. P. Williams and S. H. Clearwater, Explorations in Quantum Computing, Springer-Verlag, 1998.

    Google Scholar 

  • M. A. Nielsen and I. L. Chuang, Quantum Computation and Quantum Information, Cambridge University Press, 2000.

    Google Scholar 

  • M. Hirvensalo, Quantum Computing, Springer-Verlag, 2000.

    Google Scholar 

  • C. S. Calude and G. Pãun, Computing with Cells and Atoms: An Introduction to Quantum, DNA and Membrane Computing, Taylor & Francis, 2001.

    Google Scholar 

  • G. Pãun, G. Rozenberg, and A. Salomaa, DNA Computing: New Computing Paradigms, Springer-Verlag, 1998.

    Google Scholar 

  • M. Sipper, Machine Nature: The Coming Age of Bio-Inspired Computing, McGraw-Hill, 2002.

    Google Scholar 

  • A. Ehrenfeucht, T. Harju, I. Petre, D. M. Prescott and G. Rozenberg, Computation in Living Cells: Gene Assembly in Ciliates, Springer-Verlag, 2004. Alcuni sondaggi sono

    Google Scholar 

  • D. Aharonov, “Quantum Computation,” Annual Reviews of Computational Physics VI, D. Stauffer, ed., World Scientific, 1998.

    Google Scholar 

  • A. Berthiaume, “Quantum Computation,” in Complexity Theory Retrospective II, L. A. Hemaspaandra and A. L. Selman, eds., Springer-Verlag, 1997, pp. 23–51.

    Google Scholar 

  • D. P. DiVincenzo, “Quantum Computation,” Science 270 (1995), pp. 255–261.

    Article  MathSciNet  MATH  Google Scholar 

  • S. A. Kurtz, S. R. Mahaney, J. S. Royer, and J. Simon, “Biological Computing,” in Complexity Theory Retrospective II, L. A. Hemaspaandra and A. L. Selman, eds., Springer-Verlag, 1997, pp. 179–195.

    Google Scholar 

  • L. Kari, “DNA Computing: The Arrival of Biological Mathematics,” The Mathematical Intelligencer 19:2 (1997), pp. 9–22. A parte le riviste citate nella sezione generale, le seguenti riviste pubblicano articoli rilevanti agli argomenti di questo capitolo

    Article  MathSciNet  MATH  Google Scholar 

  • Journal of Parallel and Distributed Computing, abbreviato in J. Par. Dist. Comput.; pubblicato da Elsevier.

    Google Scholar 

  • International Journal of Parallel Programming, abbreviato in Int. J. Parallel Prog.; pubblicato da Kluwer/Plenum.

    Google Scholar 

  • Distributed Computing, abbreviato in Dist. Comput.; pubblicato da Springer.

    Google Scholar 

  • ACM Transactions on Programming Languages and Systems, abbreviato in A CM Trans. Prog. Lang. Syst., or sometimes simply TOPLAS; pubblicato da ACM.

    Google Scholar 

  • Science of Computer Programming, abbreviato in Sci. Comput. Prog.; pubblicato da Elsevier.

    Google Scholar 

  • Software: Practice and Experience, abbreviato in Softw. Pract. Exp.; pubblicato da John Wiley & Sons.

    Google Scholar 

  • Journal of Systems and Software, abbreviato in J. Syst. Softw.; pubblicato da Elsevier.

    Google Scholar 

  • IEEE Transactions on Software Engineering, abbreviato in IEEE Trans. Soft. Eng.; pubblicato da the IEEE.

    Google Scholar 

  • IEEE Transactions on Computers, abbreviato in IEEE Trans. Comput.; pubblicato da IEEE.

    Google Scholar 

  • IEEE Transactions on Parallel & Distributed Systems, abbreviato in IEEE Trans. Par. Dist. Syst.; pubblicato da IEEE.

    Google Scholar 

  • Concurrency and Computation: Practice & Experience; pubblicato da John Wiley & Sons.

    Google Scholar 

  • Quantum Information & Computation, abbreviato in Quant. Inf. Comput.; pubblicato da Rinton Press.

    Google Scholar 

  • International Journal of Quantum Information, abbreviato in Int. J. Quant. Inf.; pubblicato da World Scientific.

    Google Scholar 

  • Quantum Computers and Computing; pubblicato dal Russian Academy of Science.

    Google Scholar 

  • Journal of Computational Biology, abbreviato in J. Comput. Biol.; pubblicato da Mary Ann Liebert, Inc. L’esempio in cui si scava un fossa [pp. 318–9] è dovuto ad A. Pnueli, mentre quello in cui si ha un bambino [p. 318:nota a piè di pagina] è basato su una frase che appare a pagina 17 del seguente libro molto illuminante (segue la versione originale, una nuova edizione è stata pubblicata nel 1995)

    Google Scholar 

  • F. P. Brooks, Jr., The Mythical Man-Month, Addison-Wesley, 1979. Ci sono tre luoghi in cui si possono ottenere informazioni sugli algoritmi di ordinamento paralleli [pp. 321–32]. Il primo è ovviamente

    Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 3: Sorting and Searching, 2nd edn, Addison-Wesley, 1998. Il secondo è il seguente sondaggio

    Google Scholar 

  • D. Bitton, D. J. DeWitt, D. K. Hsaio, and J. Menon, “A Taxonomy of Parallel Sorting,” Comput. Surv. 16 (1984), pp. 287–318. Il terzo è l’intero numero di Aprile del 1985 di IEEE Transactions on Computers, il quale contiene diversi articoli sull’ordinamento parallelo. Un articolo molto influente sulle reti booleane [pp. 324–5] è

    Article  MATH  Google Scholar 

  • A. Borodin, “On Relating Time and Space to Size and Depth,” SIAM J. Comput. 6 (1977), pp. 733–744. La rete di ordinamento dispari-pari [pp. 325–7] fu inventata da K. E. Batcher e fu descritta in

    Article  MathSciNet  MATH  Google Scholar 

  • K. E. Batcher, “Sorting Networks and their Applications,” Proc. 1968 Spring Joint Comput. Conf., AFIPS Press, pp. 307–314, 1968. La rete di ordinamento in tempo logaritmico con O(N x log N) processori [pp. 325–7], a volte detta rete AKS per via dei suoi inventori (che non vanno confusi con gli inventori dell’algoritmo per i numeri primi AKS) apparve in

    Google Scholar 

  • M. Ajtai, J. Komlós, and E. Szemerédi, “Sorting in c log n Parallel Steps,” Combinatorial 3 (1983), pp. 1–19. La rete di ordinamento ottimale [pp. 325–7] basata sulla rete AKS apparve in

    Article  MATH  Google Scholar 

  • T. Leighton, “Tight Bounds on the Complexity of Parallel Sorting,” IEEE Trans. Comput. C-34 (1985), pp. 344–354. Un sondaggio eccellente sulla rete AKS e su argomenti correlati è

    Article  MathSciNet  Google Scholar 

  • N. Pippenger, “Communication Networks,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 805–833. Un sondaggio sugli algoritmi paralleli sui grafi, il quale include alcuni utili ad ottenere la copertura minima degli alberi e percorsi per il commesso viaggiatore, è

    Google Scholar 

  • M. J. Quinn and N. Deo, “Parallel Graph Algorithms,” Comput. Surv. 16 (1984), pp. 319–348. Le reti sistoliche furono studiate per la prima volta in

    Article  MathSciNet  MATH  Google Scholar 

  • H. T. Kung, “Let’s Design Algorithms for VLSI Systems,” Proc. Conf. Very Large Scale Integration: Architecture, Design, Fabrication, California Inst. Tech., pp. 65–90, 1979.

    Google Scholar 

  • H. T. Kung and C. E. Leiserson, “Algorithms for VLSI Processor Arrays,” in Introduction to VLSI Systems, C. Mead and L. Conway, eds., Addison-Wesley, 1980, pp. 271–292. Una buona esposizione viene fornita in

    Google Scholar 

  • H. T. Kung, “Why Systolic Architectures?” Computer 15-1 (1982), pp. 37–46. Argomentazioni circa i limiti del parallelismo, quando si tratta di configurare i processori all’interno di uno spazio tridimensionale, possono essere trovate in

    Article  Google Scholar 

  • P. M. B. Vitányi, “Locality, Communication and Interconnect Length in Multicomputers,” SIAM J. Comput. 17 (1988), pp. 659–672. La tesi della computazione parallela [pp. 332–3] fu proposta per la prima volta in

    Article  MathSciNet  MATH  Google Scholar 

  • A. K. Chandra and L. J. Stockmyer, “Alternation,” Proc. 17th IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 98–108, 1976. Argomentazioni ulteriori a suo favore possono essere trovate in

    Google Scholar 

  • L. M. Goldschlager, “A Universal Interconnection Pattern for Parallel Computers,” J. Assoc. Comput. Mach. 29 (1982), pp. 1073–1086. Un articolo molto importante che portava verso questa tesi è

    Article  MathSciNet  MATH  Google Scholar 

  • V. R. Pratt and L. J. Stockmeyer, “A Characterization of the Power of Vector Machines,” J. Comput. Syst. Sci. 12 (1976), pp. 198–221. La classe NC [pp. 333–5], la classe di Nick, prende il suo nome da N. Pippenger, il quale la definì e la studio per primo. Due articoli rilevanti sono

    Article  MathSciNet  MATH  Google Scholar 

  • N. Pippenger, “On Simultaneous Resource Bounds (preliminary version),” Proc. 20th IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 307–311, 1979.

    Google Scholar 

  • S. A. Cook, “Towards a Complexity Theory of Synchronous Parallel Computation,” L’Enseignement Mathématique 27 (1981), pp. 99–124. Seguono sondaggi dettagliati sui risultati e sulle questioni ancora aperte che riguardano la classe NC e diverse delle sue sotto-classi

    MATH  Google Scholar 

  • S. A. Cook, “A Taxonomy of Problems with Fast Parallel Algorithms,” Inf. and Cont. 64 (1985), pp. 2–22.

    Article  MATH  Google Scholar 

  • D. S. Johnson, “A Catalog of Complexity Classes,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 67–161.

    Google Scholar 

  • R. M. Karp and V. Ramachandran, “Parallel Algorithms for Shared-Memory Machines,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 869–941. Diverse soluzioni ai problemi di mutua esclusione [pp. 337–40] sono presentati in molti dei libri già citati prima. La soluzione presentata da noi, sia quella a due processori che quella generale [pp. 339–40], appaiono in

    Google Scholar 

  • G. L. Peterson, “Myths about the Mutual Exclusion Problem,” Inf. Proc. Lett. 12 (1981), pp. 115–116. La sicurezza e la “liveness” (ovvero, vitalità) [p. 342] sono discusse in molti dei libri sui protocolli concorrenti elencati sopra. Alcuni articoli a riguardo sono

    Article  MATH  Google Scholar 

  • L. Lamport, “Proving the Correctness of Multiprocess Programs,” IEEE Trans. Soft. Eng. SE-3 (1977), pp. 125–143.

    Article  MathSciNet  Google Scholar 

  • S. Owicki and L. Lamport, “Proving Liveness Properties of Concurrent Programs,” ACM Trans. Prog. Lang. Syst. 4 (1982), pp. 455–495. Ecco alcuni altri articoli più basilari che discutono delle prove di correttezza di protocolli concorrenti

    Article  MATH  Google Scholar 

  • S. Owicki and D. Gries, “Verifying Properties of Parallel Programs: An Axiomatic Approach,” Comm. Assoc. Comput. Mach. 19 (1976), pp. 279–285.

    MathSciNet  MATH  Google Scholar 

  • K. R. Apt, N. Francez, and W. P. de Roever, “A Proof System for Communicating Sequential Processes,” ACM Trans. Prog. Lang. Syst. 2 (1980), pp. 359–385.

    Article  MATH  Google Scholar 

  • J. Misra and K. M. Chandy, “Proofs of Networks of Processes,” IEEE Trans. Soft. Eng. SE-7 (1981), pp. 417–426. Un buon sondaggio è

    Article  MathSciNet  Google Scholar 

  • L. Lamport and N. Lynch, “Distributed Computing: Models and Methods,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 1157–1199. La logica temporale [pp. 344–6] fu suggerita per l’uso nei contesti di specifica e di verifica di algoritmi in

    Google Scholar 

  • A. Pnueli, “The Temporal Semantics of Concurrent Programs,” Theor. Comput. Sci. 13 (1981), pp. 45–60. I seguenti libri dicutono in dettaglio della logica temporale

    Article  MathSciNet  MATH  Google Scholar 

  • Z. Manna and A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems: Specification, Springer-Verlag, 1992.

    Google Scholar 

  • D. M. Gabbay, I. Hodkinson, and M. Reynolds, Temporal Logic: Mathematical Foundations and Computational Aspects, vol. 1, Oxford University Press, 1994.

    Google Scholar 

  • D. M. Gabbay, M. A. Reynolds, and M. Finger, Temporal Logic: Mathematical Foundations and Computational Aspects, vol. 2, Oxford University Press, 2000. Ecco alcuni sondaggi molto dettagliati sulla logica temporale e i suoi usi

    Google Scholar 

  • A. Pnueli, “Applications of Temporal Logic to the Specification and Verification of Reactive Systems: A Survey of Current Trends,” in Current Trends in Concurrency, J. de Bakker et al., eds., Lecture Notes in Computer Science, vol. 224, Springer-Verlag, pp. 510–584, 1986.

    Google Scholar 

  • E. A. Emerson, “Temporal and Modal Logic,” in Handbook of Theoretical Computer Science, vol. B, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 995–1072. Un approccio recente sula gestione della concorrenza, il quale differisce dalla logica temporale, può essere trovato in

    Google Scholar 

  • V. R. Pratt, “Modelling Concurrency with Partial Orders,” Int. J. Parallel Prog. 15 (1986), pp. 33–71. Ci sono molti posti dove si può leggere della verifica automatica di protocolli a stati finiti [p. 345]. Eccone alcuni

    Article  MathSciNet  MATH  Google Scholar 

  • E. M. Clarke, E. A. Emerson, and A. P. Sistla, “Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications,” ACM Trans. Prog. Lang. Syst. 8 (1986), pp. 244–263.

    Article  MATH  Google Scholar 

  • E. M. Clarke, O. Grumberg, and D. A. Peled, Model Checking, MIT Press, 2000.

    Google Scholar 

  • R. P. Kurshan, Computer-Aided Verification of Coordinating Processes: The Automata-Theoretic Approach, Princeton University Press, 1995 Il punto di riferimento per l’imparzialità è

    Google Scholar 

  • N. Francez, Fairness, Springer-Verlag, 1986. Il problema dei dining philosophers [pp. 347–50] fu introdotto da E. W. Dijkstra e viene descritto, per esempio, in

    Google Scholar 

  • E. W. Dijkstra, “Hierarchical Ordering of Sequential Processes,” Acta Inf. 1 (1971), pp. 115–138. Diverse soluzioni al problema appaiono nei libri già citati per la concorrenza. Il fatto che non esista alcuna soluzione distribuita, interamente simmetrica senza l’aggiunta di processori [pp. 349–50] fu osservato in

    Article  MathSciNet  Google Scholar 

  • N. A. Lynch, “Fast Allocation of Nearby Resources in a Distributed System,” Proc. 12th ACM Symp. on Theory of Computing, ACM Press, pp. 70–81, 1980. Un buon sondaggio sulle caratteristiche presenti in molti dei linguaggi di programmazione concorrente [pp. 350–1] è

    Google Scholar 

  • G. R. Andrews and F. B. Schneider, “Concepts and Notations for Concurrent Programming,” Comput. Surv. 15 (1983), pp. 3–43. Due libri estremamente influenti sui costrutti linguistici per la concorrenza sono

    Article  MATH  Google Scholar 

  • R. Milner, A Calculus of Communicating Systems, Springer-Verlag, 1980.

    Google Scholar 

  • C. A. R. Hoare, Communicating Sequential Processes, Prentice-Hall, 1985. I semafori [pp. 350–1] furono descritti in

    Google Scholar 

  • E. W. Dijkstra, “Cooperating Sequential Processes,” in Programming Languages, F. Genuys, ed., Academic Press, 1968. Alcuni dei primi protocolli appartenenti alla computazione quantica [pp. 352–8] sono stati presentati in

    Google Scholar 

  • C. Bennett, “Logical Reversibility of Computation,” IBM J. Research and Development 17 (1973), pp. 525–532.

    Article  MATH  Google Scholar 

  • P. Benioff, “The Computer as a Physical System: A Microscopic Quantum Mechanical Hamiltonian Model of Computers as Represented by Turing Machines,” J. Stat. Phys. 22 (1980), pp. 563–591.

    Article  MathSciNet  Google Scholar 

  • R. Feynman, “Quantum Mechanical Computers,” Optics News 11 (1985), pp. 11–20.

    Article  Google Scholar 

  • D. Deutsch, “Quantum Theory, the Church-Turing Principle, and the Universal Quantum Computer,” Proc. R. Soc. London A400 (1985), pp. 97–117. Alcuni dei primi risultati sui limiti del parallelismo quantico [p. 355: nota a piè di pagina] apparirono in

    MathSciNet  Google Scholar 

  • R. Josza, “Characterizing Classes of Functions Computable by Quantum Parallelism,” Proc. R. Soc. London A435 (1991), pp. 563–574. L’algoritmo di ricerca quantica √N [p. 356] fu descritto in

    Google Scholar 

  • L. Grover, “A Fast Quantum Mechanical Algorithm for Database Search,” Proc. 28th Ann. ACM Symp. on Theory of Computing, ACM Press, pp. 212–219, 1996. L’aloritmo di fattorizzazione quantica in tempo polinomiale di Shor [pp. 355–6] viene da

    Google Scholar 

  • P. Shor, “Algorithms for Quantum Computation: Discrete Logarithms and Factoring,” Proc. 35th IEEE Ann. Symp. on Foundations of Computer Science, IEEE Press, pp. 124–134, 1994.

    Google Scholar 

  • P. Shor, “Polynomial-time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer,” SIAM J. Comp. 26 (1997), pp. 1484–1509. Il lavoro di Shor si basò su

    Article  MathSciNet  MATH  Google Scholar 

  • D. Simon, “On the Power of Quantum Computation,” Proc. 35th Ann. IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 116–123, 1994. Esistono molte informazioni sulle difficoltà di costruire un computer quantico [pp. 357–8] nei libri e nei sondaggi elencati all’inizio delle note per questo capitolo. La macchina a sette qubit [p. 357] fu descritta in

    Google Scholar 

  • E. Knill, R. Laflamme, R. Martinez, and C.-H. Tseng, “An Algorithmic Benchmark for Quantum Information Processing,” Nature 404 (2000), pp. 368–370. La prima computazione molecolare, la quale risolse un’istanza a sette città del problema del commesso viaggiatore [p. 357], fu eseguita da L. M. Adelman, e raccontato in

    Article  Google Scholar 

  • L. M. Adelman, “Molecular Computation of Solutions to Combinatorial Problems,” Science 266 (1994), pp. 1021–1024. Si veda anche

    Article  Google Scholar 

  • L. M. Adelman, “Computing with DNA,” Scientific American 279:2 (1998), pp. 54–61. I risultati più forti riguardanti i problemi NP-completi in generale [p. 358] apparirono in

    Article  MathSciNet  Google Scholar 

  • R. J. Lipton, “DNA Solution of Hard Computational Problems,” Science 268 (1994), pp. 542–545. Alcuni risultati sul Potenziale dei computer molecolari di risparmiare energia appaiono in

    Article  Google Scholar 

  • E. Baum, “Building an Associative Memory Vastly Larger Than the Brain,” Science 268 (1995), pp. 583–585.

    Article  Google Scholar 

Capitolo 11 Molti dei libri su algoritmi elencati nelle note dei capitoli precedenti contengono materiale su algoritmi probabilistici e l’analisi probabilistica di algoritmi convenzionali. I seguenti si concentrano su questi argomenti

  • R. Motwani and P. Raghavan, Randomized Algorithms, Cambridge University Press, 1995.

    Google Scholar 

  • N. Alon and J. H. Spencer, The Probabilistic Method, 2nd edn, John Wiley & Sons, 2000.

    Google Scholar 

  • M. Hofri, Probabilistic Analysis of Algorithms, Springer-Verlag, 1987. Per quanto riguarda le riviste, quelle elencate nella sezione generale e nelle note del Capitolo 2 sono anche esse qui rilevanti. Le soluzioni probabilistiche al problema dei dining philosophers [pp. 364–7], così come l’affermazione che la prima soluzione ammette lockout [pp.366-7] appaiono in

    Google Scholar 

  • D. Lehmann and M. O. Rabin, “The Advantages of Free Choice: A Symmetric and Fully Distributed Solution to the Dining Philosophers Problem,” Proc. 8th ACM Symp. on Principles of Programming Languages, ACM Press, pp. 133–138, 1981. Il fatto che il problema della primalità di numero sia in NP [p. 369] viene dimostrato in

    Google Scholar 

  • V. R. Pratt, “Every Prime has a Succint Certificate,” SIAM J. Comput. 4 (1975), pp. 214–220. Il test per vedere se un numero è primo esegue in un tempo polinomiale ma dipende dall’ipotesi estesa di Riemann [p. 370] che appare in

    Article  MathSciNet  MATH  Google Scholar 

  • G. L. Miller, “Riemann’s Hypothesis and Tests for Primality,” J. Comput. Syst. Sci. 13 (1976), pp. 300–317. L’algoritmo O(N O(log log N)) per il problema [p. 370] appare in

    Article  MATH  Google Scholar 

  • L. Adelman, C. Pomerance, and R. S. Rumely, “On Distinguishing Prime Numbers from Composite Numbers,” Ann. Math. 117 (1983), pp. 173–206. L’algoritmo per vedere se un numero è primo che esegue in un tempo polinomiale (l’algoritmo AKS) [p. 370] fu presentato in

    Article  Google Scholar 

  • M. Agrawal, N. Kayal, and N. Saxena, “PRIMES is in P,” manuscript, August 2002. I primi articoli a contenere algoritmi randomizzati e probabilistici che non fossero banali sembrano essere i seguenti, i quali contengono due algoritmi indipendenti per vedere se un numero è primo [pp. 371–5]

    Google Scholar 

  • M. O. Rabin, “Probabilistic Algorithm for Testing Primality,” J. Number Theory 12 (1980), pp. 128–138.

    Article  MathSciNet  MATH  Google Scholar 

  • R. Solovay and V. Strassen, “A Fast Monte-Carlo Test for Primality,” SIAM J. Comput. 6 (1977), pp. 84–85. Una versione preliminare dell’algoritmo di Rabin apparve nel seguente articolo molto influente

    Article  MathSciNet  MATH  Google Scholar 

  • M. O. Rabin, “Probabilistic Algorithms,” in Algorithms and Complexity: Recent Results and New Directions, J. F. Traub, ed., Academic Press, pp. 21–40, 1976. Due articoli importanti sul pattern matching non probabilistico [p. 381] sono

    Google Scholar 

  • D. E. Knuth, J. H. Morris, and V. R. Pratt, “Fast Pattern Matching in Strings,” SIAM J. Comput. 6 (1977), pp. 323–350.

    Article  MathSciNet  MATH  Google Scholar 

  • R. S. Boyer and J. S. Moore, “A Fast String Searching Algorithm,” Comm. Assoc. Comput. Mach. 20 (1977), pp. 762–772. L’algoritmo di fingerprinting probabilistico [pp. 375–8] apparve in

    MATH  Google Scholar 

  • R. M. Karp and M. O. Rabin, “Efficient Randomized Pattern-Matching Algorithms,” IBM J. Res. Dev. 31 (1987), pp. 249–260. Il seguente sondaggio studia gli algoritmi di pattern matching, inclusi i due già citati sopra

    Article  MathSciNet  MATH  Google Scholar 

  • A. V. Aho, “Algorithms for Finding Patterns in Strings,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 255–300. Il seguente articolo contiene un breve, ma informativo, sondaggio sui vari approcci agli algoritmi probabilistici

    Google Scholar 

  • R. M. Karp, “Combinatorics, Complexity, and Randomness,” Comm. Assoc. Comput. Mach. 29 (1986), pp. 98–109. Un articolo influente sulle macchine di Turing probabilistiche e sulla classe di complessità probabilistica [p. 378] è

    MathSciNet  MATH  Google Scholar 

  • J. Gill, “Computational Complexity of Probabilistic Turing Machines,” SIAM J. Comput. 6 (1977), pp. 675–695. Ci sono tre buoni posti dove leggere delle classi di complessità e delle relazioni esistenti tra loro

    Article  MathSciNet  MATH  Google Scholar 

  • D. S. Johnson, “A Catalog of Complexity Classes,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 67–161.

    Google Scholar 

  • S. Zachos, “Robustness of Probabilistic Computational Complexity Classes under Definitional Perturbations,” Inf. and Cont. 54 (1982), pp. 143–154.

    Article  MathSciNet  MATH  Google Scholar 

  • U. Schöming, Complexity and Structure, Lecture Notes in Computer Science, vol. 211, Springer-Verlag, 1986. Lavori importanti che forniscono dimostrazioni di algoritmi probabilistici di verifica [p. 379] appaiono in

    Google Scholar 

  • D. Kozen, “Semantics of Probabilistic Programs,” J. Comput. Syst. Sci. 22 (1981), pp. 328–350.

    Article  MathSciNet  MATH  Google Scholar 

  • D. Lehmann and S. Shelah, “Reasoning with Time and Chance,” Inf. and Cont. 53 (1982), pp. 165–198.

    Article  MathSciNet  MATH  Google Scholar 

  • S. Hart, M. Sharir, and A. Pnueli, “Termination of Probabilistic Concurrent Programs,” ACM Trans. Prog. Lang. Syst. 5 (1983), pp. 352–380.

    Article  Google Scholar 

  • Y. A. Feldman and D. Harel, “A Probabilistic Dynamic Logic,” J. Comput. Syst. Sci. 28 (1984), pp. 193–215.

    Article  MathSciNet  MATH  Google Scholar 

  • Y. A. Feldman, “A Decidable Propositional Probabilistic Dynamic Logic with Explicit Probabilities,” Inf. and Cont. 63 (1984), pp. 11–38. Il fatto che i problemi in RP hanno circuiti booleani di dimensioni polinomiali [p. 380] fu dimostrato in

    Article  MATH  Google Scholar 

  • L. Adleman, “Two Theorems on Random Polynomial Time,” Proc. 19th IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 75–83, 1978. Un articolo interessante che discute i due approcci al probabilismo negli algoritmi e le relazioni esistenti tra loro [p. 381] è

    Google Scholar 

  • A. C. Yao, “Probabilistic Computations: Towards a Unified Measure of Complexity,” Proc. 18th IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 222–227, 1977. Un articolo estremamente influente circa i numeri casuali e pseudo-casuali [pp. 381] può essere trovato in

    Google Scholar 

  • A. Kolmogorov, “Three Approaches to the Concept of the Amount of Information,” Probl. Inf. Transm. 1 (1965), pp. 1–7. Informazioni sui numeri pseudo-casuali nel senso di tempo polinomiale discusso nel testo [p. 381] possono essere trovate in

    Google Scholar 

  • A. Shamir, “On the Generation of Cryptographically Secure Pseudo-Random Sequences,” ACM Transactions on Computer Systems 1 (1983), pp. 38–44.

    Article  Google Scholar 

  • A. C. Yao, “Theory and Applications of Trapdoor Functions,” Proc. 23rd IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 80–91, 1982.

    Google Scholar 

  • M. Blum and S. Micali, “How to Generate Cryptographically Strong Sequences of Pseudo-Random Bits,” SIAM J. Comput. 13 (1984), pp. 850–864. Resoconti dettagliati sui numeri casuali e pseudo-casuali appaiono in

    Article  MathSciNet  MATH  Google Scholar 

  • D. E. Knuth, The Art of Computer Programming, vol. 2: Seminumerical Algorithms, 3rd edn, Addison-Wesley, 1997.

    Google Scholar 

  • O. Goldreich and L. Lovasz, Modern Cryptography, Probabilistic Proofs and Pseudorandomness, Springer-Verlag, 1999. Un’esposizione interessante su alcune questioni correlate è

    Google Scholar 

  • G. J. Chaitin, “Randomness and Mathematical Proof,” Scientific American 232:5 (1975), pp. 47–52.

    Article  Google Scholar 

Capitolo 12 Ci sono molti libri che affrontano in maniera dettagliata la crittografia. Eccone alcuni che forniscono un buon trattamento degli aspetti scientifici dell’argomento

  • A. G. Konheim, Cryptography: A Primer, John Wiley & Sons, 1981.

    Google Scholar 

  • D. E. R. Denning, Cryptography and Data Security, Addison-Wesley, 1982.

    Google Scholar 

  • O. Goldreich and L. Lovasz, Modern Cryptography, Probabilistic Proofs and Pseudorandomness, Springer-Verlag, 1999.

    Google Scholar 

  • O. Goldreich, Foundations of Cryptography: Basic Tools, Cambridge University Press, 2001. Un sondaggio molto utile è

    Google Scholar 

  • R. L. Rivest, “Cryptography,” in Handbook of Theoretical Computer Science, vol. A, J. van Leeuwen, ed., Elsevier and MIT Press, 1990, pp. 717–755. Ci sono diverse riviste che pubblicano articoli sulla crittografia. Due che sono interamente dedicate all’argomento sono

    Google Scholar 

  • Journal of Cryptology, abbreviato in J. Crypt.; pubblicato da Springer-Verlag.

    Google Scholar 

  • Cryptologia; pubblicato dal United States Military Academy. La crittografia a chiave pubblica [pp. 389–92], e l’idea di usare questo schema per le firme [pp. 392–3], furono proposte nel seguente articolo molto importante

    Google Scholar 

  • W. Diffie and M. Hellman, “New Directions in Cryptography,” IEEE Trans. Inform. Theory IT-22 (1976), pp. 644–654. Il sistema crittografico RSA [pp. 392–5] prende il suo nome dai suoi inventori, e apparve in

    Article  MathSciNet  Google Scholar 

  • R. L. Rivest, A. Shamir, and L. M. Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,” Comm. Assoc. Comput. Mach. 21 (1978), pp. 120–126. La versione che è stata dimostrata essere difficile da “craccare” quanto fattorizzare numeri grandi [p. 395] apparve in

    MathSciNet  MATH  Google Scholar 

  • M. O. Rabin, “Digitalized Signatures and Public-Key Functions as Intractable as Factorization,” Technical Report MIT/LCS/TR-212, Mass. Inst. of Tech., Cambridge, MA, 1979. Un sondaggio esplicativo sulla crittografia a chiave pubblica è

    Google Scholar 

  • M. E. Hellman, “The Mathematics of Public-Key Cryptography,” Scientific American 241:2 (1979), pp. 146–157. Il protocollo per la dsitribuzione delle carte di gioco [pp. 395–8] apparve in

    Article  MathSciNet  Google Scholar 

  • A. Shamir, R. L. Rivest, and L. M. Adleman, “Mental Poker,” in The Mathematical Gardner, D. A. Klarner, ed., Wadsworth International, Belmont, CA, 1981. Il fatto che nel protocollo di distribuzione delle carte venisse usata in maniera naive l’idea che alcune informazioni potessero andare perse nell’uso di funzioni crittografiche, corne quelle RSA, fu dimostrato in

    Google Scholar 

  • R. J. Lipton, “How to Cheat at Mental Poker,” Proc. AMS Short Course on Cryptology, American Mathematical Society, 1981. Un protocollo più complesso per la distribuzione delle carte, il quale non soffre di questi difetti, apparve nel seguente articolo

    Google Scholar 

  • S. Goldwasser and S. Micali, “Probabilistic Encryption,” J. Comput. Syst. Sci. 28 (1984), pp. 270–299. Tre articoli che spiegano i protocolli crittografici, ovvero protocolli che possono essere utilizzati per mantenere un segreto, e questioni simili sono

    Article  MathSciNet  MATH  Google Scholar 

  • A. Shamir, “How to Share a Secret,” Comm. Assoc. Comput. Mach. 22 (1979), pp. 612–613.

    MathSciNet  MATH  Google Scholar 

  • M. Blum, “How to Exchange (Secret) Keys,” A CM Trans. Comput. Syst. 1 (1983), pp. 175–193.

    Article  Google Scholar 

  • A. C. Yao, “How to Generate and Exchange Secrets,” Proc. 27th IEEE Symp. on Foundations of Computer Science, IEEE Press, pp. 162–167, 1986. Dimostrazioni interattive e protocolli a conoscenza zero [pp. 400–2] furono considerati per la prima volta in

    Google Scholar 

  • S. Goldwasser, S. Micali, and C. Rackoff, “The Knowledge Complexity of Interactive Proof Systems,” SIAM J. Comput. 18 (1989), pp. 186–208. Per conoscere la dimostrazione che IP = PSPACE [p. 328] è necessario leggere

    Article  MathSciNet  MATH  Google Scholar 

  • C. Lund, L. Fortnow, H. Karloff, and N. Nisan, “Algebraic Methods for Interactive Proof Systems,” J. Assoc. Comput. Mach. 39 (1992), pp. 859–868.

    Article  MathSciNet  MATH  Google Scholar 

  • A. Shamir, “IP = PSPACE,” J. Assoc. Comput. Mach. 39 (1992), pp. 869–877. L’approccio a conoscenza zero al gioco di Dove è Waldo? viene da

    Article  MathSciNet  MATH  Google Scholar 

  • M. Naor, Y. Naor, and O. Reingold, “Applied Kid Cryptography, or How to Convince Your Children That You Are Not Cheating,” unpublished manuscript, 1999. L’approccio a conoscenza zero per la colorazione di un grafo con tre colori [pp. 402–5] apparve in

    Google Scholar 

  • O. Goldreich, S. Micali, and A. Wigderson, “Proofs that Yield Nothing But Their Validity, or All Languages in NP Have Zero-Knowledge Proof Systems,” J. Assoc. Comput. Mach. 38 (1991), pp. 691–729. Uno degli articoli più importanti sulle dimostrazioni controllabili probabilisticamente [pp. 405–6] è

    Article  MathSciNet  MATH  Google Scholar 

  • U. Feige, S. Goldwasser, L. Lovász, S. Safra, and M. Szegedy, “Approximating Clique is Almost NP-complete,” J. Assoc. Comput. Mach., 43 (1996), pp. 268–292. Il risultato ultimo, ovvero che i problemi in NP possono essere controllati tenendo d’occhio solo un numero costante di bit di prova, viene da

    Article  MATH  Google Scholar 

  • S. Arora and S. Safra, “Probabilistic Checking of Proofs: A New Characterization of NP,” J. Assoc. Comput. Mach., 45 (1998), pp. 70–122.

    Article  MathSciNet  MATH  Google Scholar 

Capitolo 13 Ci sono molti libri interamente dedicati ai vari aspetti dell’ingegneria del software. I due più famosi sono

  • R. S. Pressman, Software Engineering: A Practitioner’s Approach, 5th edn, McGraw-Hill, 2001.

    Google Scholar 

  • I. Sommerville, Software Engineering, 6th edn, Addison-Wesley, 2000. I seguenti libri si concentrano sull’ingegneria del software orientata a oggetti

    Google Scholar 

  • B. Liskov with J. Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, 2000.

    Google Scholar 

  • B. Meyer, Object-Oriented Software Construction, 2nd edn, Prentice-Hall, 1997.

    Google Scholar 

  • I. Jacobson, M. Christerson, P. Jonsson, and G. Övergaard, Object-Oriented Software Engineering: A Use Case Driven Approach, Addison-Wesley, 1992.

    Google Scholar 

  • B. Bruegge and A. H. Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems, Prentice-Hall, 2000. Il seguente libro si concentra sugli aspetti economici dello sviluppo del software

    Google Scholar 

  • B. W. Boehm, Software Engineering Economics, Prentice-Hall, 1981. Per molti anni, F. P. Brooks ha gestito alcuni dei progetti software più grandi di IBM, incluso il sistema operativo per mainframe OS/360. Le sue considerazioni su queste esperienze (sia buone che cattive, incluso il famoso “errore da diversi milioni di dollari”) sono discusse nel suo libro molro influente

    Google Scholar 

  • F. P. Brooks, Jr., The Mythical Man-Month: Essays on Software Engineering, special anniversary edn, Addison-Wesley, 1995. Le seguenti riviste pubblicano articoli sull’ingegneria del software: IEEE Transactions on Software Engineering, abbreviato in IEEE Trans. Soft. Eng.; pubblicato da IEEE. ACM Transactions on Software Engineering and Methodology, abbreviato in ACM Trans. Soft. Eng. Meth., or simply TOSEM; pubblicato da ACM.

    Google Scholar 

  • IEEE Software; pubblicato da IEEE.

    Google Scholar 

  • Advances in Engineering Software, abbreviato in Adv. in Eng. Soft.; pubblicato da Elsevier.

    Google Scholar 

  • Information and Software Technology, abbreviato in Inf. Soft. Tech.; pubblicato da Elsevier.

    Google Scholar 

  • Software: Practice and Experience, abbreviato in Softw. Pract. Exp.; pubblicato da John Wiley & Sons.

    Google Scholar 

  • International Journal on Software Tools for Technology Transfer, abbreviato in Int. J. Soft. Tools for Tech. Transfer, or simply STTT; pubblicato da Springer-Verlag.

    Google Scholar 

  • Software and System Modeling, abbreviato in Soft. Syst. Modeling, o semplicemente SoSyM; pubblicato da Springer-Verlag. Una collezione di errori correlati ai computer, categorizzati e analizzati, appare in

    Google Scholar 

  • P. G. Neumann, Computer-Related Risks, Addison-Wesley, 1995. Le seguenti colonne su mensili rendono conto dei rischi correlati ai computer

    Google Scholar 

  • “Inside Risks,” Comm. Assoc. Comput. Mach., ACM Press. Un’analisi degli incidenti correlati alla tecnologia usata per definire una metodologia per la costruzione di sistemi di sicurezza critici viene presentata in

    Google Scholar 

  • N. G. Leveson, Safeware: System Safety and Computers, Addison-Wesley, 1995. L’aneddoto dei “manager programmatori” [p. 413] è stato tratto da pagina 124 di

    Google Scholar 

  • G. M. Weinberg, The Psychology of Computer Programming: Silver Anniversary Edition, Dorset House, 1998. L’extreme programming [pp. 429–30] viene discusso in diversi libri. La prima introduzione all’argomento venne fornita in

    Google Scholar 

  • K. Beck, Extreme Programming Explained, Addison-Wesley, 2000. Una valutazione critica dell’extreme programming è fornita in

    Google Scholar 

  • P. McBreen, Questioning Extreme Programming, Addison-Wesley, 2003. Il concetto di refactoring [pp. 429–30] è introdotto in

    Google Scholar 

  • M. Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 2000. L’idea di confrontare il refactoring al pagamento dei debiti [p. 429] è dovuta a W. Cunningham, e viene quotata a pagina 222 di

    Google Scholar 

  • A. Cockburn, Agile Software Development, Addison-Wesley, 2002. La tecnica del pair programming (ovvero, della programmazione in coppia) [p. 430] è stata discussa in dettaglio in

    Google Scholar 

  • L. Williams and R. Kessler, Pair Programming Illuminated, Addison-Wesley, 2003. Le questioni psicologiche furono considerate per la prima volta nello sviluppo del software [pp. 431–2] nella prima edizione del libro di Weinberg, già citato sopra, il quale, sebbene pubblicato nel 1971, è rilevante adesso come lo era allora. Altri libri che trattano lo stesso argomento sono

    Google Scholar 

  • G. M. Weinberg, Understanding the Professional Programmer, Dorset House, 1988.

    Google Scholar 

  • T. DeMarco and T. Lister, Peopleware: Productive Projects and Teams, 2nd edn, Dorset House, 1999.

    Google Scholar 

  • L. L. Constantine, The Peopleware Papers: Notes on the Human Side of Software, Prentice-Hall, 2001. L’anedotto delle “machinette” [p. 432] viene da pagina 49 di

    Google Scholar 

  • G. M. Weinberg, The Psychology of Computer Programming: Silver Anniversary Edition, Dorset House, 1998. La filosofia dietro le metodologie agili [p. 432] è stata spiegata nel libro di Cockburn già citato sopra. La visione secondo la quäle i programmatori debbano essere visti come artigiani e non elementi intercambiabili in una linea di produzione [p. 432] è

    Google Scholar 

  • P. McBreen, Software Craftsmanship: The New Imperative, Addison-Wesley, 2000. Un libro molto influente sugli aspetti etici della programmazione [p. 432], scritto dopo che J. Weizenbaum si disperò per come la gente antromorfizzasse il suo programma eliza (discusso nel Capitolo 15), è

    Google Scholar 

  • J. Weizenbaum, Computer Power and Human Reason: From Judgment to Calculation, W. H. Freeman, 1976. Un’introduzione molto accattivante e provocante dell’etica professionale nello sviluppo del software, il quale contiene ulteriori riferimenti bibliografici su questo argomento, è

    Google Scholar 

  • R. G. Epstein, The Case of the Killer Robot, John Wiley & Sons, 1997.

    Google Scholar 

Capitolo 14 Alcuni dei libri generali sull’ingegneria del software elencati nelle note del Capitolo 13 contengono materiale rilevante ai sistemi reattivi. Eccono alcuni che si concentrano sulle difficioltà che appaiono nello sviluppo di tali sistemi

  • Z. Manna and A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems: Specification, Springer-Verlag, 1992.

    Google Scholar 

  • N. Halbwachs, Synchronous Programming of Reactive Systems, Kluwer Academic Publishers, 1993.

    Google Scholar 

  • D. Harel and M. Politi, Modeling Reactive Systems with Statecharts: The Statemate Approach, McGraw-Hill, 1998.

    Google Scholar 

  • R. J. Wieringa, Design Methods for Reactive Systems: Yourdon, Statemate, and the UML, Morgan Kaufmann, 2002.

    Google Scholar 

  • K. Schneider, Verification of Reactive Systems: Formal Methods and Algorithms, Springer-Verlag, 2003. Le riviste citate nelle note del Capitolo 13 pubblicano anche articoli sui sistemi reattivi. Il termine “sitema reattivo” [pp. 437–9] fu discusso per la prima volta nei seguenti articoli

    Google Scholar 

  • D. Harel and A. Pnueli, “On the Development of Reactive Systems,” in Logics and Models of Concurrent Systems, K. R. Apt, ed., NATO ASI Series, vol. F-13, Springer-Verlag, pp. 477–498, 1985.

    Google Scholar 

  • A. Pnueli, “Applications of Temporal Logic to the Specification and Verification of Reactive Systems: A Survey of Current Trends,” in Current Trends in Concurrency, J. de Bakker et al., eds., Lecture Notes in Computer Science, vol. 224, Springer-Verlag, pp. 510–584, 1986. I formalismi visuali [pp. 439–40] sono discussi in

    Google Scholar 

  • D. Harel, “On Visual Formalisms,” Comm. Assoc. Comput. Mach. 31 (1988), pp. 514–530. Le reti di Petri [p. 439] furono inventate da C. A. Petri, e furono descritte per la prima volta nella sua tesi estremamente influente

    MathSciNet  Google Scholar 

  • C. A. Petri, Kommunikation mit Automaten, PhD thesis, Institut für Instrumentelle Mathematik, Bonn, 1962. Ci sono molti libri e articoli che ne parlano; due dei migliori resoconti sono

    Google Scholar 

  • W. Reisig, Petri Nets: An Introduction, Springer-Verlag, 1985.

    Google Scholar 

  • W. Reisig, Elements of Distributed Algorithms: Modeling and Analysis with Petri Nets, Springer-Verlag, 1998. I diagrammi SDL [p. 440] furono parte di uno standard del 1976 che nacque nel contesto dell’International Telecommunication Union (ITU; già precedentemente CCITT). Per una versione aggiornata si veda

    Google Scholar 

  • “ITU-T Recommendation Z.100: Formal Description Techniques (FDT)—Specification and Description Language (SDL),” International Telecommunication Union (ITU), Geneva, 1999. Esterel [p. 440] fu descritto in

    Google Scholar 

  • G. Berry and G. Gonthier, “The Esterei Synchronous Programming Language: Design, Semantics, Implementation,” Sci. Comput. Program. 19 (1992), pp. 87–152. Si veda anche

    Article  MATH  Google Scholar 

  • G. Berry, “The Foundations of Esterel,” in Proof, Language, and Interaction: Essays in Honour of Robin Milner, G. Plotkin, C. Stirling, and M. Tofte, eds., MIT Press, 2000, pp. 425–454. Lustre [p. 440] fu descritto in

    Google Scholar 

  • P. Caspi, D. Pilaud, N. Halbwachs, and J. Plaice, “Lustre: A Declarative Language for Programming Synchronous Systems,” Proc. 14th Symp. on Principles of Programming Languages, ACM Press, pp. 178–188, 1987.

    Google Scholar 

  • N. Halbwachs, P. Caspi, P. Raymond and D. Pilaud, “The Synchronous Dataflow Programming Language Lustre,” Proc. of the IEEE 79 (1991), pp. 1305–1320. Un resoconto dettagliato può essere trovato nel libro di Halbwach che abbiamo già citato. Signal [p. 440] fu descritto in

    Article  Google Scholar 

  • A. Benveniste and P. Le Guernic, “Hybrid Dynamical Systems Theory and the Signal Language,” IEEE Trans. on Automatic Control, AC-35 (1990), pp. 535–546. Un buon sondaggio può essere trovato in

    Article  Google Scholar 

  • P. Le Guernic, T. Gautier, M. Le Borgne, and C. Le Maire, “Programming Real-Time Applications with Signal,” Proc. of the IEEE 79 (1991), pp. 1321–1336. Un resoconto interessante dei cosiddetti linguaggi sincroni può essere trovato in

    Article  Google Scholar 

  • A. Benveniste, P. Caspi, S. A. Edwards, N. Halbwachs, P. Le Guernic and R. de Simone, “The Synchronous Languages Twelve Years Later,” Proc. of the IEEE 91 (2003), pp. 64–83. Due approcci estremamente influenti alla specifica della concorrenza e delle interazioni (che sono direttamente rilevanti per quanto riguarda la reattivtà) sono il CSP e il CCS. Sono dovuti rispettivamente a C. A. R. Hoare e R. Milner. Sono descritti in dettaglio nei libri di questi autori, elencati entrambi nelle note del Capitolo 10. Gli statchart [pp. 440–3] furono introdotti nel seguente articolo, il quale discute anche gli svantaggi dei classici diagrammi a stati e contiene (in una versione più intricata) l’esempio dell’orologio digitale [pp. 441–2]

    Article  Google Scholar 

  • D. Harel, “Statecharts: A Visual Formalism for Complex Systems,” Sci. Comput. Prog. 8 (1987) pp. 231–274. Ci sono diversi strumenti computerizzati completi in grado di eseguire modelli di sistemi basati su formalismi visuali e di generare codice a partire da loro [p. 440]. Il primo fu rilasciato nel 1987, ed è descritto in

    Article  MathSciNet  MATH  Google Scholar 

  • D. Harel, H. Lachover, A. Naamad, A. Pnueli, M. Politi, R. Sherman, A. Shtul-Trauring, and M. Trakhtenbrot, “STATEMATE: A Working Environment for the Development of Complex Reactive Systems,” IEEE Trans. on Software Engineering 16 (1990), pp. 403–414. La discussione sull’esecuzione di modelli e sulla generazione di codice [pp. 443–6] è stata adattata da

    Article  Google Scholar 

  • D. Harel, “Biting the Silver Bullet: Toward a Brighter Future for System Development,” Computer 25:1 (1992), IEEE Press, pp. 8–20. La verifica di un comportamento reattivo complesso [pp. 445–6] è stato discusso nel libro di Schneider elencato prima. Ecco alcuni articoli che discutono dello stesso argomento

    Article  Google Scholar 

  • N. Bjorner et al., “STeP: Deductive-Algorithmic Verification of Reactive and Real-time Systems,” Proc. Int. Conf. on Computer Aided Verification, Lecture Notes in Computer Science, vol. 1102, Springer-Verlag, pp. 415–418, 1996.

    Google Scholar 

  • T. Bienmller, W. Damm, and H. Wittke, “The STATEMATE Verification Environment—Making it Real,” Proc. 12th Int. Conf. on Computer Aided Verification, Lecture Notes in Computer Science, vol. 1855, Springer-Verlag, pp. 561–567, 2000.

    Google Scholar 

  • F. Levi, “Compositional Verification of Quantitative Properties of Statecharts,” J. of Logic and Computation 11 (2001), pp. 829–878. Un sistema che registra storie che includono cause, e che è dunque in grado di aiutare sistemi di debug fornendo risposte al “perchè”, “perchè no” e ai “se” [p. 446] è descritto in

    Article  MATH  Google Scholar 

  • Y. A. Feldman and H. Schneider, “Simulating Reactive Systems by Deduction,” ACM Trans. Soft. Eng. Meth. 2 (1993), pp. 128–175. La modellazione orientata a oggetti, e il suo uso dei diagrammi a oggetti e degli statechart [pp. 447–51], ricevette una forte spinta in avanti per via dei seguenti due libri influenti

    Article  Google Scholar 

  • J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorenson, Object-Oriented Modeling and Design, Prentice-Hall, 1990.

    Google Scholar 

  • G. Booch, Object-Oriented Analysis and Design with Applications, 2nd edn, Addison-Wesley, 1993. I primi strumenti in grado di eseguire modelli orientati agi oggetti basati su formalismi visuali e di generare codice furono ObjecTime e Rhapsody. Sono descritti, rispettivamente, in

    Google Scholar 

  • B. Selic, G. Gullekson, and P. T. Ward, Real-Time Object-Oriented Modeling, John Wiley & Sons, 1994.

    Google Scholar 

  • D. Harel and E. Gery, “Executable Object Modeling with Statecharts,” Computer 30:7 (1997), IEEE Press, pp. 31–42. I Messgae Sequence Chart (MSC) [pp. 451–2] furono sviluppati dalla International Telecommunication Union (ITU: già precedentemente CCITT). Un resoconto recente appare in

    Article  Google Scholar 

  • “ITU-TS Recommendation Z.120: Formal Description Techniques (FDT)—Message Sequence Chart (MSC),” International Telecommunication Union (ITU), Geneva, 1996. Gli use case (ovvero, casi d’uso) furono descritti e discussi in dettaglio in

    Google Scholar 

  • I. Jacobson, M. Christerson, P. Jonsson, and G. Övergaard, Object-Oriented Software Engineering: A Use Case Driven Approach, Addison-Wesley, 1992. I Live Sequence Chart (LSC) [pp. 454–6] furono definiti nel seguente articolo, il quale discute anche degli svantaggi deigli MSC nella specifica comportamentale di un sistema

    Google Scholar 

  • W. Damm and D. Harel, “LSCs: Breathing Life into Message Sequence Charts,” Formal Methods in System Design 19 (2001), pp. 45–80. Play-in, play-out, e il tool Play-Engine tool [pp. 457–9] sono descritti in dettaglio in

    Article  MATH  Google Scholar 

  • D. Harel and R. Marelly, Come, Let’s Play: Scenario-Based Programming Using LSCs and the Play-Engine, Springer-Verlag, 2003. Quel libro definisce anche alcune estensioni degli LSC per la gestione di istanze simboliche e del tempo [p. 458], e fornisce una semantica operazionale per il linguaggio LSC esteso. Smart play-out [p. 458] fu descritto in

    Google Scholar 

  • D. Harel, H. Kugler, R. Marelly, and A. Pnueli, “Smart Play-Out of Behavioral Requirements,” Proc. 4th Int. Conf. on Formal Methods in Computer-Aided Design, Lecture Notes in Computer Science, vol. 2517, Springer-Verlag, pp. 378–398, 2002. Ci sono molti altri libri sui sistemi real-time [pp. 459–60]. Eccone alcuni

    Google Scholar 

  • H. Kopetz, Real-Time Systems: Design Principles for Distributed Embedded Applications, Kluwer Academic Publishers, 1997.

    Google Scholar 

  • J. W. S. Liu, Real-Time Systems, Prentice-Hall, 2000.

    Google Scholar 

  • Q. Li with C. Yao, Real-Time Concepts for Embedded Systems, CMP Books, 2003. Il formalismo di specifica di sistemi real-time MASS [pp. 459–60] viene da

    Google Scholar 

  • V. Gafni, A. Yehudai, and Y. A. Feldman, “Activation-Oriented Specification of Real-time Systems,” Proc. 3rd Int. School and Symposium on Formal Techniques in Real Time and Fault Tolerant Systems, pp. 19–23, 1994. L’UML [pp. 460–1] viene descritto in moltissimi libri e articoli, inclusi i seguenti

    Google Scholar 

  • J. Rumbaugh, I. Jacobson, and G. Booch, The Unified Modeling Language Reference Manual, Addison-Wesley, 1999.

    Google Scholar 

  • M. Fowler with K. Scott, UML Distilled: A Brief Guide to the Standard Object Modeling Language, 2nd edn, Addison-Wesley, 1999. Le versioni più aggiornte di UML sono descritto in grande dettaglio sul sito web del object management group (OMG)

    Google Scholar 

  • R. Eshuis and R. J. Wieringa, “Requirements-Level Semantics for UML Statecharts,” Proc. 4th Int. Conf. on Formal Methods for Open Object-Based Distributed Systems, Kluwer, pp. 121–140, 2000.

    Google Scholar 

  • G. Reggio, M. Cerioli, and E. Astesiano, “Towards a Rigorous Semantics of UML Supporting its Multiview Approach,” Fundamental Approaches to Software Engineering, Lecture Notes in Computer Science, vol. 2029, Springer-Verlag, pp. 171–186, 2001.

    Google Scholar 

  • I. Ober, “An ASM Semantics of UML Derived from the Meta-model and Incorporating Actions,” Proc. 10th Int. Workshop on Abstract State Machines, Lecture Notes in Computer Science, vol. 2589, Springer-Verlag, pp. 356–371, 2003.

    Google Scholar 

  • W. Damm, B. Josko, A. Pnueli, and A. Votintseva, “Understanding UML: A Formal Semantics of Concurrency and Communication in Real-Time UML,” Proc. Formal Methods for Components and Objects, Lecture Notes in Computer Science, vol. 2852, Springer-Verlag, pp. 71–98, 2003. La sintesi di macchine a stati finiti a partire da descrizioni dei requisiti comportamentali ricchespesso e volentieri a partire da una logica temporale-è un argomento che è stato discusso a lungo nella letteratura. La sintesi a partire da LSC [p. 461] fu trattata in

    Google Scholar 

  • D. Harel and H. Kugler, “Synthesizing State-Based Object Systems from LSC Specifications,” Int. J. of Foundations of Computer Science 13 (2002), pp. 5–51. Alcune delle possibilità che nascono dall’idea di vedere sistemi biologici come sistemi reattivi sono discusse in

    Article  MathSciNet  MATH  Google Scholar 

  • D. Harel, “A Grand Challenge for Computing: Full Reactive Modeling of a Multi-Cellular Animal,” EATCS Bulletin, European Association for Theoretical Computer Science, no. 81, pp. 226–235, 2003.

    Google Scholar 

Capitolo 15 Ci sono diversi libri sull’intelligenza artificiale (IA). Eccone alcuni

  • N. J. Nilsson, Artificial Intelligence: A New Synthesis, Morgan Kaufmann, 1998.

    Google Scholar 

  • P. H. Winston, Artificial Intelligence, 3rd edn, Addison-Wesley, 1992.

    Google Scholar 

  • E. Rich and R. Knight, Artificial Intelligence, 2nd edn, McGraw-Hill, 1990.

    Google Scholar 

  • S. Russel and P. Norvig, Artificial Intelligence: A Modern Approach, 2nd edn, Prentice-Hall, 2002.

    Google Scholar 

  • E. Charniak and D. McDermott, Introduction to Artificial Intelligence, Addison-Wesley, 1985.

    Google Scholar 

  • T. Dean, J. Allen, and Y. Aloimonos, Artificial Intelligence: Theory and Practice, Pearson Education, 2002. Due compilation enciclopediche di articoli sull’intelligenza artificiale

    Google Scholar 

  • The Handbook of Artificial Intelligence, 4 vols, A. Barr, P. R. Cohen, and E. A. Feigenbaum, eds., Addison-Wesley, 1981, 1982, 1989.

    Google Scholar 

  • The Encyclopedia of Artificial Intelligence, 2 vols, 2nd edn, S. C. Shapiro, ed., John Wiley & Sons, 1992. Una buona esposizione dell’argomento può essere trovato in

    Google Scholar 

  • D. L. Waltz, “Artificial Intelligence,” Scientific American 247:4 (1982), pp. 118–133. Oltre a questi, ci sono diversi libri e articoli che discutono gli aspetti sociali, filosofici e storici dell’intelligenza artificiale. Alcuni dei più interessanti e provocanti sono

    Article  Google Scholar 

  • J. R. Lucas, “Minds, Machines, and Gödel,” Philosophy 36 (1961), pp. 112–117.

    Article  Google Scholar 

  • H. Dreyfus, What Computers Can’t Do: The Limits of Artificial Intelligence, revised edn, Harper & Row, 1979.

    Google Scholar 

  • H. Dreyfus, What Computers Still Can’t Do: A Critique of Artificial Reason, MIT Press, 1992.

    Google Scholar 

  • Y. Wilks, “Dreyfus’s Disproofs,” British J. Philos. Sci. 27 (1976), pp. 177–185.

    Article  Google Scholar 

  • D. R. Hofstadter, Gödel, Escher, Bach: An Eternal Golden Braid, Basic Books, 1979.

    Google Scholar 

  • S. Turkle, The Second Self: Computers and the Human Spirit, Simon & Schuster, 1984.

    Google Scholar 

  • H. Gardner, Frames of Mind: The Theory of Multiple Intelligences, 10th edn, Basic Books, 1993.

    Google Scholar 

  • J. V. Grabiner, “Computers and The Nature of Man: A Historian’s Perspective on Controversies about Artificial Intelligence,” Bull. Amer. Math. Soc. 15 (1986), pp. 113–126.

    Article  MathSciNet  MATH  Google Scholar 

  • R. Penrose, The Emperor’s New Mind: Concerning Computers, Minds, and the Laws of Physics, Penguin Books, 1999.

    Google Scholar 

  • J. R. Searle, Minds, Brains, and Science, Harvard University Press, 1984. I seguenti libri contengono alcuni degli articoli più originali del campo dell’intelligenza artificiale, inclusi alcuni articoli chiave di A. Turing, A. Newell, M. Minsky e H. A. Simon

    Google Scholar 

  • Computers and Thought, E. A. Feigenbaum and J. Feldman, eds., McGraw-Hill, 1961.

    Google Scholar 

  • Semantic Information Processing, M. Minsky, ed., MIT Press, 1968.

    Google Scholar 

  • Readings in Artificial Intelligence, B. L. Webber and N. J. Nilsson, eds., Morgan Kaufmann, 1994.

    Google Scholar 

  • Readings in Knowledge Representation, R. J. Brachman and H. J. Levesque, eds., Morgan Kaufmann, 1985.

    Google Scholar 

  • Mind Design II: Philosophy, Psychology, and Artificial Intelligence, J. Haugeland, ed., MIT Press, 2000. Un libro molto influente è

    Google Scholar 

  • A. Newell and H. A. Simon, Human Problem Solving, Prentice-Hall, 1972. Una teoria molto interessante sull’intelligenza, proposta da uno dei fondatori del campo, è presentata in

    Google Scholar 

  • M. Minsky, The Society of Mind, Simon & Schuster, 1987. Un resoconto interessante della storia primitiva dell’IA si trova in

    Google Scholar 

  • P. McCorduck, Machines Who Think, W. H. Freeman & Co., 1979. Seguono alcune delle riviste che pubblicano articoli sull’IA

    Google Scholar 

  • Artificial Intelligence, abbreviato in Artif. Intel.;pubblicato da Elsevier.

    Google Scholar 

  • Cognitive Science, abbreviato in Cogn. Sci.; pubblicato dal Cognitive Science Society, Inc.

    Google Scholar 

  • Computational Intelligence, abbreviato in Comput. Intel.; pubblicato da Blackwell.

    Google Scholar 

  • IEEE Transactions on Systems, Man and Cybernetics, abbreviato in IEEE Trans. Syst., Man, Cybern.; pubblicato da IEEE.

    Google Scholar 

  • IEEE Transactions on Pattern Analysis and Machine Intelligence, abbreviato in IEEE Trans. Pat. Anal. Mach. Intel.; pubblicato da IEEE.

    Google Scholar 

  • International Journal of Pattern Recognition and AI, abbreviato in Int. J. Patt. Recog. AI; pubblicato da World Scientific.

    Google Scholar 

  • Computers and Artificial Intelligence, abbreviato in Comput. Art. Intel.; pubblicato dal Slovak Academy of Sciences. In aggiunta, le seguenti pubblicano articoli brevi, anedotti e annunci rilevanti all’IA

    Google Scholar 

  • A CM SIGART Newsletter; pubblicato dal Special Interest Group on Artificial Intelligence dell’ACM.

    Google Scholar 

  • The AISB Quarterly; pubblicato dal Society for the Study of Artificial Intelligence and the Simulation of Behaviour (SSAISB). L’aforisma che mette a confronto i computer pensanti e i sottomarini [p. 467] è dovuto a E. W. Dijkstra. Si pensa che il termine intelligenza artificiale [p. 467] sia stato coniato da J. McCarthy nel 1956. Le due storie sui robot [p. 468] sono dovute a un membro del laboratorio di IA del Massachusetts Institute of Technology. Il seguente articolo di Alan Turing è considerato uno di quelli più illuminanti e fondamentali sull’IA. Esso delinea e studia diverse argomentazioni comuni contro I’IA [p. 469], e propone il famoso test di Turing [pp. 470–3]

    Google Scholar 

  • A. M. Turing, “Computing Machinery and Intelligence,” Mind 59 (1950), pp. 433–460. (Reprinted on pp. 11–35 of the aforementioned book, Computers and Thought). Buona parte dei libri sull’IA contengono discussioni e elaborazioni sul test di Turing. eliza fu scritto da J. Weizenbaum, ed è descritto nel seguente articolo molto influente

    Article  MathSciNet  Google Scholar 

  • J. Weizenbaum, “ELIZA—A Computer Program for the Study of Natural Language Communication between Man and Machine,” Comm. Assoc. Comput. Mach. 9 (1966), pp. 36–45. Lo scambio ipotetico riguardante gli zupchok [pp. 473] fu ispirato da uno simile (che aveva a che fare con i cyborg) che apparve a pagina 317 di

    Google Scholar 

  • I. Pohl and A. Shaw, The Nature of Computation: An Introduction to Computer Science, Computer Science Press, 1981. L’argomentazione della stanza cinese di Searle [p. 474] fu presentata per la prima volta in

    Google Scholar 

  • J. Searle, “Minds, Brains, and Programs,” Behavioral and Brain Sciences 3 (1980), pp. 417–457. I libri di IA elencati prima discutono in dettaglio di giochi e, in particolare, di giochi sugli alberi [pp. 474–7]. L’analogia del “volo artificiale” [p. 475] è stata presa dal primo dei seguenti due libri, e appare in una forma leggermente diversa nel secondo

    Article  Google Scholar 

  • S. Russel and P. Norvig, Artificial Intelligence: A Modern Approach, 2nd edn, Prentice-Hall, 2002.

    Google Scholar 

  • R. A. Brooks, Cambrian Intelligence, MIT Press, 1999. Seguono alcune collezioni di articoli sul gioco da parte dei computer, inclusi articoli sugli scacchi, sulle dame, sul backgammon, sul Go e su altri giochi

    Google Scholar 

  • Chess, Computers, and Cognition, T. Marsland and J. Schaeffer, eds., Springer-Verlag, 1990.

    Google Scholar 

  • Computer Games, 2 vols., D. N. L. Levy, ed., Springer-Verlag, 1988. Un articolo espositivo interessante sul gioco computerizzato del backgammon [p. 475] si trova in

    Google Scholar 

  • H. Berliner, “Computer Backgammon,” Scientific American 242:6 (1980), pp. 64–72. Un resoconto del programma che ha battuto il campione mondiale di backgammon [p. 475] si trova in

    Article  Google Scholar 

  • H. Berliner, “Backgammon Computer Program Beats World Champion,” Artif. Intel. 14 (1980), pp. 205–220. I seguenti articoli estremamente importanti sul gioco computerizzato della dama [p. 475] descrivono un sistema in grado di imparare

    Article  Google Scholar 

  • A. L. Samuel, “Some Studies in Machine Learning using the Game of Checkers,” IBM J. Res. Develop. 3 (1959), pp. 211–229. (Reprinted on pp. 71–105 of the aforementioned book, Computers and Thought.)

    Article  MathSciNet  Google Scholar 

  • A. L. Samuel, “Some Studies in Machine Learning using the Game of Checkers. II—Recent Progress,” IBM J. Res. Develop. 11 (1967), pp. 601–617. Un resoconto molto candido della costruzione del programma Chinook e degli eventi che lo portò a essere il campione mondiale di dama, appare in

    Article  Google Scholar 

  • J. Schaeffer, One Jump Ahead: Challenging Human Supremacy in Checkers, Springer-Verlag, 1997. Alcuni buoni posti dove leggere del gioco computerizzato degli scacchi, incluso degl incontri molto pubblicizzati tra Kasparov e Deep Blue, sono

    Google Scholar 

  • D. Levy and M. Newborn, How Computers Play Chess, Computer Science Press, 1991.

    Google Scholar 

  • B. Pandolfini, Kasparov and Deep Blue: The Historic Chess Match Between Man and Machine, Fireside, 1997.

    Google Scholar 

  • M. Newborn, Deep Blue: An Artificial Intelligence Milestone, Springer-Verlag, 2003. La storia della ricerca di una lente a contatto [p. 477] fu ispirata da pagina 318 del libro di Pohl e Shaw menzionato sopra. Alcuni dei libri più influenti sulla visione computerizzata dei robot [p. 479] sono

    Google Scholar 

  • D. Marr, Vision: A Computational Investigation into the Human Representation and Processing of Visual Information, W. H. Freeman & Co., 1982.

    Google Scholar 

  • B. K. P. Horn, Robot Vision, MIT Press, 1986.

    Google Scholar 

  • S. Ullman, The Interpretation of Visual Motion, MIT Press, 1979.

    Google Scholar 

  • J. J. Craig, Introduction to Robotics: Mechanics and Control, Addison-Wesley, 1985.

    Google Scholar 

  • R. P. Paul, Robot Manipulators: Mathematics, Programming, and Control, MIT Press, 1981. Altri libri più aggiornati sono

    Google Scholar 

  • D. A. Forsyth and J. Ponce, Computer Vision: A Modern Approach, Prentice-Hall, 2002.

    Google Scholar 

  • S. Ullman, High-Level Vision: Object Recognition and Visual Cognition, MIT Press, 1996.

    Google Scholar 

  • R. Jain, R. Kasturi, and B. G. Schunck, Machine Vision, McGraw-Hill, 1995.

    Google Scholar 

  • V. S. Nalwa, A Guided Tour of Computer Vision, Addison-Wesley, 1993.

    Google Scholar 

  • O. Faugeras, Three-Dimensional Computer Vision: A Geometric Viewpoint, MIT Press, 1993.

    Google Scholar 

  • P. J. McKerrow, Introduction to Robotics, Addison-Wesley, 1991.

    Google Scholar 

  • R. C. Arkin, Behavior-Based Robotics, MIT Press, 1998.

    Google Scholar 

  • R. R. Murphy, An Introduction to AI Robotics, MIT Press, 2000. Ci sono anche molti giornali devoti interamente alla visione e alla robotica. Ecco alcuni esempi

    Google Scholar 

  • International Journal of Computer Vision, abbreviated Int. J. Comput. Vis.; published by Kluwer Academic Publishers.

    Google Scholar 

  • Computer Vision and Image Understanding; published by Elsevier.

    Google Scholar 

  • Journal of Robotic Systems, abbreviated J. Robot. Syst.; published by John Wiley & Sons.

    Google Scholar 

  • International Journal of Robotics Research, abbreviated Int. J. Robot. Res.; published by Sage Publications. Virtualmente ogni libro di testo sull’IA discute dell’idea del minimax e del suo algoritmo corrispondentela procedura alpha beta [pp. 480–1]. Il termine “procedura alpha beta” sembra essere dovuto a J. McCarthy, e l’uso dell’idea del minmax nella ricerca parte dall’importante articolo di Shannon

    Google Scholar 

  • C. E. Shannon, “Programming of a Computer for Playing Chess,” Phil. Magazine 41 (1950), pp. 256–275. Un resoconto completo e dettagliato delle procedure di ricerca euristiche, incluse le loro analisi e la loro storia, può essere trovato in

    MathSciNet  MATH  Google Scholar 

  • J. Pearl, Heuristics: Intelligent Search Strategies for Computer Problem Solving, Addison-Wesley, 1984. La collezione composta da Brachman e Levesque sopra citata è dovuta al problema della rappresentazione della conoscenza [pp. 392–3], un argomento discusso in moltissimi altri libri e articoli. Il seguente contiene moltissimo materiale su sistemi esperti [pp. 484–5]

    Google Scholar 

  • R. Duda and E. Shortliffe, “Expert Systems Research,” Science 220 (1983), pp. 261–268.

    Article  Google Scholar 

  • Building Expert Systems, F. Hayes-Roth et al., eds., Addison-Wesley, 1983.

    Google Scholar 

  • D. A. Waterman, A Guide to Expert Systems, Addison-Wesley, 1986.

    Google Scholar 

  • P. Jackson, Introduction to Expert Systems, 3rd edn, Addison-Wesley, 1999.

    Google Scholar 

  • J. C. Giarratano, Expert Systems: Principles and Programming, 3rd edn, Brooks Cole, 1998. I seguenti libri e collezioni di articoli si concentrano sull’apprendimento computerizzato [pp. 485–6]

    Google Scholar 

  • T. Mitchell, Machine Learning, McGraw-Hill, 1987.

    Google Scholar 

  • S. M. Weiss and C. A. Kulikowsky, Computer Systems That Learn, Morgan Kaufmann, 1991.

    Google Scholar 

  • M. J. Kearns and U. V. Vazirani, An Introduction to Computational Learning Theory, MIT Press, 1994.

    Google Scholar 

  • Machine Learning: An Artificial Intelligence Approach, R. S. Michalski et al., eds., Tioga Publishing Co., 1983.

    Google Scholar 

  • Machine Learning: An Artificial Intelligence Approach, vol. II, R. S. Michalski et al., eds., Morgan Kaufmann Publishers, 1986. Due articoli influenti sulla deduzione computerizzata [pp. 485–6] sono

    Google Scholar 

  • A. Newell and H. A. Simon, “The Logic Theory Machine,” IRE Trans. Infor. Theory IT-2 (1956), pp. 61–79.

    Article  Google Scholar 

  • H. Gelernter, “Realization of a Geometry Theorem-Proving Machine,” Proc. Western Joint Computer Conf., WJCC, pp. 273–282, 1959. L’approccio all’IA basato sul comportamento [p. 487] è descritto in

    Google Scholar 

  • R. A. Brooks, Cambrian Intelligence, MIT Press, 1999.

    Google Scholar 

  • R. A. Brooks, Flesh and Machines: How Robots Will Change Us, Pantheon Books, 2002. Le predizioni per il futuro dell’IA [pp. 487–8] sono prese da

    Google Scholar 

  • R. Kurzweil, The Age of Spiritual Machines: When Computers Exceed Human Intelligence, Penguin, 2000. Ecco alcuni libri e collezioni di articoli che descrivono i problemi e i risultati ottenuti nell’intendimento computerizzato del linguaggio naturale [pp. 489–93]

    Google Scholar 

  • J. Allen, Natural Language Understanding, 2nd edn, Addison-Wesley, 1995.

    Google Scholar 

  • Natural Language Processing and Knowledge Representation: Language for Knowledge and Knowledge for Language, L. M. Iwanska and S. C. Shapiro, eds., AAAI Press, 2000.

    Google Scholar 

  • R. Schank, The Cognitive Computer: On Language, Learning, and Artificial Intelligence, Addison-Wesley, 1984.

    Google Scholar 

  • J. F. Sowa, Conceptual Structures: Information Processing in Mind and Machine, Addison-Wesley, 1983. Alcuni lavori importanti sull’argomento sono descritti in

    Google Scholar 

  • T. Winograd, Understanding Natural Language, Academic Press, 1972. Intendere la promessa di fedeltà come qualcosa che avesse a che fare con i piccioni [p. 489] fu un’idea usata da W. Safire in una delle sue colonne “On Language” nel New York Times molti anni fa. Le discussioni con il telefono di Jim [pp. 491–2] sono basate su quelle che sono apparse nel delizioso componimento

    Google Scholar 

  • R. W. Lucky, “The Phone Surrogate,” IEEE Spectrum 23:5 (1986), p. 6. Esso fu ristampato in

    Google Scholar 

  • R. W. Lucky, Lucky Strikes … Again, IEEE Press, New York, 1993. Un articolo interessante che ha a che vedere con i commenti fatti circa l’IA analitica [p. 493] è

    Google Scholar 

  • A. Goldberg and I. Pohl, “Is Complexity Theory of Use to AI?” in Artificial and Human Intelligence, A. Elithorn and R. Banerji, eds., Elsevier Science, 1984. Un approccio diverso alla soluzione di alcuni dei problemi apparsi nel capitolo, denominato connessionismo, e rilevanti per le reti neurali, è descritto in

    Google Scholar 

  • D. E. Rumelhart, J. L. McClelland, and the PDP Research Group, Parallel Distributed Processing: Explorations in the Microstructure of Cognition, vol. 1: Foundations, MIT Press, 1986. Un’esposizione di alcune delle idee principali può essere trovata in

    Google Scholar 

  • D. W. Tank and J. J. Hopfield, “Collective Computation in Neuronlike Circuits,” Scientific American 257:6 (1987), pp. 62–70.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Italia, Milano

About this chapter

Cite this chapter

Harel, D., Feldman, Y. (2008). Note bibliografiche. In: Algoritmi. Unitext(). Springer, Milano. https://doi.org/10.1007/978-88-470-0580-8_18

Download citation

Publish with us

Policies and ethics