Enumeration algorithm

Enumeration algorithm

In computer science, an enumeration algorithm is an algorithm that enumerates the answers to a computational problem. Formally, such an algorithm applies to problems that take an input and produce a list of solutions, similarly to function problems. For each input, the enumeration algorithm must produce the list of all solutions, without duplicates, and then halt. The performance of an enumeration algorithm is measured in terms of the time required to produce the solutions, either in terms of the total time required to produce all solutions, or in terms of the maximal delay between two consecutive solutions and in terms of a preprocessing time, counted as the time before outputting the first solution. This complexity can be expressed in terms of the size of the input, the size of each individual output, or the total size of the set of all outputs, similarly to what is done with output-sensitive algorithms. == Formal definitions == An enumeration problem P {\displaystyle P} is defined as a relation R {\displaystyle R} over strings of an arbitrary alphabet Σ {\displaystyle \Sigma } : R ⊆ Σ ∗ × Σ ∗ {\displaystyle R\subseteq \Sigma ^{}\times \Sigma ^{}} An algorithm solves P {\displaystyle P} if for every input x {\displaystyle x} the algorithm produces the (possibly infinite) sequence y {\displaystyle y} such that y {\displaystyle y} has no duplicate and z ∈ y {\displaystyle z\in y} if and only if ( x , z ) ∈ R {\displaystyle (x,z)\in R} . The algorithm should halt if the sequence y {\displaystyle y} is finite. == Common complexity classes == Enumeration problems have been studied in the context of computational complexity theory, and several complexity classes have been introduced for such problems. A very general such class is EnumP, the class of problems for which the correctness of a possible output can be checked in polynomial time in the input and output. Formally, for such a problem, there must exist an algorithm A which takes as input the problem input x, the candidate output y, and solves the decision problem of whether y is a correct output for the input x, in polynomial time in x and y. For instance, this class contains all problems that amount to enumerating the witnesses of a problem in the class NP. Other classes that have been defined include the following. In the case of problems that are also in EnumP, these problems are ordered from least to most specific: Output polynomial, the class of problems whose complete output can be computed in polynomial time. Incremental polynomial time, the class of problems where, for all i, the i-th output can be produced in polynomial time in the input size and in the number i. Polynomial delay, the class of problems where the delay between two consecutive outputs is polynomial in the input (and independent from the output). Strongly polynomial delay, the class of problems where the delay before each output is polynomial in the size of this specific output (and independent from the input or from the other outputs). The preprocessing is generally assumed to be polynomial. Constant delay, the class of problems where the delay before each output is constant, i.e., independent from the input and output. The preprocessing phase is generally assumed to be polynomial in the input. == Common techniques == Backtracking: The simplest way to enumerate all solutions is by systematically exploring the space of possible results (partitioning it at each successive step). However, performing this may not give good guarantees on the delay, i.e., a backtracking algorithm may spend a long time exploring parts of the space of possible results that do not give rise to a full solution. Flashlight search: This technique improves on backtracking by exploring the space of all possible solutions but solving at each step the problem of whether the current partial solution can be extended to a partial solution. If the answer is no, then the algorithm can immediately backtrack and avoid wasting time, which makes it easier to show guarantees on the delay between any two complete solutions. In particular, this technique applies well to self-reducible problems. Closure under set operations: If we wish to enumerate the disjoint union of two sets, then we can solve the problem by enumerating the first set and then the second set. If the union is non disjoint but the sets can be enumerated in sorted order, then the enumeration can be performed in parallel on both sets while eliminating duplicates on the fly. If the union is not disjoint and both sets are not sorted then duplicates can be eliminated at the expense of a higher memory usage, e.g., using a hash table. Likewise, the cartesian product of two sets can be enumerated efficiently by enumerating one set and joining each result with all results obtained when enumerating the second step. == Examples of enumeration problems == The vertex enumeration problem, where we are given a polytope described as a system of linear inequalities and we must enumerate the vertices of the polytope. Enumerating the minimal transversals of a hypergraph. This problem is related to monotone dualization and is connected to many applications in database theory and graph theory. Enumerating the answers to a database query, for instance a conjunctive query or a query expressed in monadic second-order. There have been characterizations in database theory of which conjunctive queries could be enumerated with linear preprocessing and constant delay. The problem of enumerating maximal cliques in an input graph, e.g., with the Bron–Kerbosch algorithm Listing all elements of structures such as matroids and greedoids Several problems on graphs, e.g., enumerating independent sets, paths, cuts, etc. Enumerating the satisfying assignments of representations of Boolean functions, e.g., a Boolean formula written in conjunctive normal form or disjunctive normal form, a binary decision diagram such as an OBDD, or a Boolean circuit in restricted classes studied in knowledge compilation, e.g., NNF. == Connection to computability theory == The notion of enumeration algorithms is also used in the field of computability theory to define some high complexity classes such as RE, the class of all recursively enumerable problems. This is the class of sets for which there exist an enumeration algorithm that will produce all elements of the set: the algorithm may run forever if the set is infinite, but each solution must be produced by the algorithm after a finite time.

Virtual Woman

Virtual Woman is a software program that has elements of a chatbot, virtual reality, artificial intelligence, a video game, and a virtual human. It claims to be the oldest form of virtual life in existence, as it has been distributed since the late 1980s. Recent releases of the program can update their intelligence by connecting online and downloading newer personalities and histories. == Program play == When Virtual Woman starts, the user is presented with a list of options and then may choose their Virtual Woman's ethnic type, personality, location, clothing, etc. or load a pre-built Virtual Woman from a Digital DNA file. Once the options are determined, the user is presented with a 3-D animated Virtual Woman of their selection and then can engage them in conversation, progressing in a manner similar to that of its predecessor, ELIZA and its successors, the chatbots. In most versions of Virtual Woman, this is done through the keyboard, but some versions also support voice input. == In popular culture == Software sales and usage statistics from private companies are difficult to verify. WinSite, an independent Internet shareware distribution site that does publish public download counts, has for some time now listed some version of Virtual Woman in their top three shareware downloads of all time with well over seven hundred thousand downloads. == Compadre == The group of beta testers and advisers for Virtual Woman are referred to as Compadre and have their own beta testing site and forum. == Criticisms == As Virtual Woman has developed the ability to conduct longer and more realistic interactions, particularly in recent beta releases, criticism has arisen that this may lead some users to social isolation, or to use the program as a substitute for real human interaction. However, these are criticisms that have been leveled at all video games and at the use of the Internet itself. == Release history == Versions of Virtual Woman with rough release dates and PC platforms for which they were designed: Virtual Woman (????) (DOS) Virtual Woman for Windows (1991) (Windows 3.0) Virtual Woman 95 (1995) (Windows 3X, Windows 95) Virtual Woman 98 (1998) (Windows 3X, Windows 95) Virtual Woman 2000 (2000) (Windows 95+) Virtual Woman Millennium (Windows 95, XP) Virtual Woman Net ( Windows XP/Vista specific)

A Fire Upon the Deep

A Fire Upon the Deep is a 1992 science fiction novel by American writer Vernor Vinge. It is a space opera involving superhuman intelligences, aliens, variable physics, space battles, love, betrayal, genocide, and a communication medium resembling Usenet. A Fire Upon the Deep won the Hugo Award in 1993, sharing it with Doomsday Book by Connie Willis. Besides the normal print book editions, the novel was also included on a CD-ROM sold by ClariNet Communications along with the other nominees for the 1993 Hugo awards. The CD-ROM edition included numerous annotations by Vinge on his thoughts and intentions about different parts of the book, and was later released as a standalone e-book. It has a loose prequel, A Deepness in the Sky, from 1999, and a direct sequel, The Children of the Sky, from 2012. == Setting == The novel is set in various locations within the Milky Way. The galaxy is divided into four concentric volumes called the "Zones of Thought"; it is not clear to the novel's characters whether this is a natural phenomenon or an artificially created one. Each Zone has fundamental differences in basic physical laws. One of the main consequences of these differences is the effect on intelligence. Artificial intelligence and automation is most directly affected, in that advanced hardware and software from the Beyond or the Transcend will work less and less well as a ship descends towards the Unthinking Depths. Biological intelligence is affected to a lesser degree. The four zones are spoken of in terms of "low" to "high" as follows: The Unthinking Depths are the innermost zone, surrounding the Galactic Center. In it, only minimal forms of intelligence, biological or otherwise, are possible. This means that any ship straying into the Depths will be stranded, effectively permanently. Even if the crew did not die immediately—and some forms of life native to "higher" Zones would likely do so—they would be rendered incapable of even human intelligence, leaving them unable to operate their ship in any meaningful way. Surrounding the Depths is the Slow Zone or Slowness. "Old Earth" is in this Zone, although Earth plays no significant role in the story. Biological intelligence is possible in "the Slowness", but not true, sentient, artificial intelligence. Faster than light travel (FTL) is impossible in the Slow Zone. Faster-than-light communication is impossible into or out of the Slow Zone. As the boundaries of the Zones are subject to change, accidental entry into the Slow Zone is a major hazard at the "Bottom" of the Beyond. Starships which operate near the Beyond/Slow Zone border often have an auxiliary Bussard ramjet drive, so that if they accidentally stray into the Slow Zone, they will at least have a backup (sub-light) drive to try to reach the Beyond. Such ships also tend to include "coldsleep" equipment, as it is likely that any such return will still take many lifetimes for most species. The next layer outward is the Beyond, within which artificial intelligence, FTL travel, and FTL communication are possible. All human civilizations in the Beyond are descended from a single ethnic Norwegian group. The original settlement of this group is known as Nyjora; other human settlements in the Beyond include Straumli Realm and Sjandra Kei. In the Beyond, FTL travel is accomplished by making many small "jumps" across space, with the efficiency of the drive increasing the farther a ship travels from the galactic core. The Beyond is not a homogeneous zone; it includes the "High Beyond", "Middle Beyond", and the "Bottom of the Beyond", depending on distance from the galactic core. The Beyond is populated by a very large number of interstellar and intergalactic civilizations which are linked by an FTL communication network, "the Net", sometimes cynically called the "Net of a Million Lies". The Net is depicted as working much like the Usenet network in the early 1990s, with transcripts of messages containing header and footer information as one would find in such forums. The outermost layer, containing the galactic halo, is the Transcend, within which incomprehensible, superintelligent beings dwell. When a "Beyonder" civilization reaches the point of technological singularity, it can "Transcend", becoming a "Power". Such Powers always seem to relocate to the Transcend, seemingly necessarily, where they become engaged in activities which are entirely mysterious to those in the Beyond. == Plot == An expedition from Straumli Realm, a human civilization in the High Beyond, investigates a newly discovered data archive in the Low Transcend. The expedition's facility, High Lab, is gradually compromised by a superintelligence that is accidentally awoken by the researchers. This superintelligence is later known as the Blight. Shortly before the Blight's final "flowering", two self-aware entities, created similarly to the Blight, plot to aid the humans before the Blight can gain its full powers. Finally recognizing their danger, the High Lab researchers attempt to flee in two ships. The Blight destroys one ship; a second ship, carrying many High Lab children in coldsleep boxes, escapes. This ship lands on a distant planet at the Bottom of the Beyond. The planet is occupied by dog-like creatures, dubbed "Tines", who live in packs as group minds. The Tines have a level of technology comparable to the human Middle Ages. Upon landing, however, the two surviving adults, Arne and Sjana Olnsdot, are ambushed and killed by Tine fanatics known as Flenserists, in whose realm they have landed. The Flenserists capture their children, Jefri and Johanna. Johanna is rescued by a Tine named Peregrine and taken to a neighboring kingdom ruled by Woodcarver. A distress signal from the Straumli ship eventually reaches Relay, a major information provider for the Net. A Transcendent being named "Old One" contacts Relay, seeking information about the Blight and the humans who released it. Old One then reconstitutes a human man named Pham Nuwen from the wreckage of a spaceship to act as its agent. Pham remains unsure if he is a construct or if his memories are real. Ravna Bergsndot, the only human Relay employee, traces the Straumli ship's signal to the Tines' world and persuades her employer to investigate. Ravna contracts the merchant vessel Out of Band II to transport her and Pham. The ship is owned by two Skroderiders, Blueshell and Greenstalk. Before the mission is launched, the Blight launches a surprise attack on Relay and kills Old One. As Old One dies, it downloads its anti-Blight information into Pham. Pham, Ravna and the Skroderiders barely escape Relay's destruction in the Out of Band II. During their journey to Tine's World, Ravna communicates with Jefri. Jefri is manipulated to believe that Woodcarver is his enemy. The Flenserist leaders, Steel and Tyrathect, use Ravna's information to develop advanced technology such as cannon and radio communication. Meanwhile, Johanna and the knowledge stored in her dataset device help Woodcarver rapidly develop as well. The Blight expands, taking over several civilizations, brainwashing their populations, and seizing archives in the Beyond. On the Net, some claim that humans are the means by which the Blight is able to spread. Anti-human fanatics destroy the entire civilization of Sjandra Kei, which is Ravna's home world. The Out of Band II is pursued by three fleets: anti-human fanatics, survivors from Sjandra Kei, and a shadow fleet controlled by the Blight. During the pursuit, Ravna and Pham learn that every member of the Skroderider species can be subverted by the Blight; this drives a wedge between the crew members. Ships from Sjandra Kei sacrifice themselves to delay the Blight and the anti-human ships, allowing the Out of Band II to reach Tine's World before the Blight. When the Out of Band II arrives at Tine's World, the humans ally with Woodcarver to defeat the Flenserists and rescue Jefri. Blueshell sacrifices himself to rescue Jefri. Pham then initiates an anti-Blight Countermeasure, which was aboard the humans' ship. The Countermeasure extends the Slow Zone outward by thousands of light years. This envelops and destroys the Blight, but results in the destruction of thousands of civilizations and trillions of deaths. The humans are stranded on the Tines' World, now in the depths of the Slow Zone. Activating the Countermeasure proves fatal to Pham, but before he dies, the remnant of Old One reveals to him that, although his body is a reconstruction, his memories are indeed real. == Related works == Vinge first used the concepts of "Zones of Thought" in a 1988 novella The Blabber, which occurs after Fire. Vinge's novel A Deepness in the Sky (1999) is a prequel to A Fire Upon the Deep set 20,000 years earlier and featuring Pham Nuwen. Vinge's The Children of the Sky, "a near-term sequel to A Fire Upon the Deep", set ten years later, was released in October 2011. Vinge's former wife, Joan D. Vinge, has also written s

Imagen (text-to-image model)

Imagen is a series of text-to-image models developed by Google DeepMind. They were developed by Google Brain until the company's merger with DeepMind in April 2023. Imagen is primarily used to generate images from text prompts, similar to Stability AI's Stable Diffusion, OpenAI's DALL-E, or Midjourney. The original version of the model was first discussed in a paper from May 2022. The tool produces high-quality images and is available to all users with a Google account through services including Gemini, ImageFX, and Vertex AI. == History == Imagen's original version was first presented in a paper published in May 2022. It featured the ability to generate high-fidelity images from natural language. The second version, Imagen 2 was released in December 2023. The standout feature was text and logo generation. Imagen 3 was released in August 2024. Google claims that the newest version provides better detail and lighting on generated images. On 20 May 2025 at Google I/O 2025 the company released an improved model, Imagen 4. == Technology == Imagen uses two key technologies. The first is the use of transformer-based large language models, notably T5, to understand text and subsequently encode text for image synthesis. The second is the use of cascaded diffusion models providing high-fidelity image generation. Imagen generates image in three stages, starting from a base of 64x64, then upsampled to 256x256 and 1024x1024. Imagen 4 generates image up to 2k. == Capabilities == Imagen can generate photorealistic images from text prompts. It can also create various styles, such as cinematic, 35mm film, illustration, and surreal. Like most text-to-image generative AI models, Imagen has difficulty rendering human fingers, text, ambigrams and other forms of typography. The model can generate images in five aspect ratios, namely 9:16, 3:4, 1:1, 4:3, and 16:9. Imagen can also refine already generated images by editing existing text prompts.

Argüman

Argüman is a free and open source software for collective structured argumentation and argument analysis via argumentation graphs or argument maps in which the type of connections can be specified. It allows users to create collaborative "semantic maps" of arguments in well structured tree formats and share them with an audience and potential participants. Arguman.org was an open structured social debate platform that implemented the software. It is down as of 2023. There also is a mobile version of the tool. The project was started, in 2014, and largely built by developers in Turkey. Some studies used or investigated excerpts of argumentations on the platform. Unlike the larger and functional alternative Kialo, which is structured using only 'Pro' and 'Con' relations, argüman arguments are structured by three types of premises – 'because', 'but', and 'however'. As of the latest version, debates are presented in their entirety as a large tree which may be harder to navigate than other formats – for instance, trees "can become extremely dense, and the interface does not make it obvious which arguments the user should pay attention to". Users can also flag arguments for fallacies. Arguman.org also had a Turkish-language subdomain. A researcher suggested the concept of the Semantic Web-interoperability could be useful for argumentative structures on the Web, going beyond the conventional flat structures of discussions and lack of characterizations of their components as implemented in argüman. There is research into how to automatically use these collaborative argumentation graphs, which is a "very active" topic in Artificial Intelligence. There also is research into applying conclusion-making methods to the debates or their data, such as bipolar weighted argumentation frameworks – this could be a way to find out what the current conclusion of debates like "Computer Science is not actually a science" is. A study suggests it could be useful for the development of critical thinking skills.

Easyrec

easyrec is an open-source program that provides personalized recommendations using RESTful Web services to be integrated into Web enabled applications. It is distributed under the GNU General Public License by the Studio Smart Agent Technologies and hosted at SourceForge. It is written in Java, uses a MySQL database and comes with an administration tool. == History == The development of easyrec, an implementation of the Adaptive Personalization approach, started in the course of several research and development projects conducted by the Studio Smart Agent Technologies in close cooperation with international companies. During the year of 2008 the core functionality of easyrec was developed forming the basis of research prototypes focusing on the music domain (e.g. MusicExplorer). In June 2009 a beta version of easyrec, containing basic administration features, was integrated into a movie streaming portal for evaluation purposes. Furthermore, in September 2009 easyrec was awarded a special recognition in the category “Award for Innovations – IT Innovations for an economic upswing” by the jury of the Austrian state prize for multimedia and e-business. After a comprehensive refactoring phase and the integration of the evaluation results easyrec was published on SourceForge on 18 February 2010. In course of the CeBIT tradeshow 2011 in Hanover easyrec has been awarded the German “INNOVATIONSPREIS-IT 2011”. == Principles == The following five primary goals guided the development of easyrec. It should be a ready-to-use application, not another algorithmic framework It should be easy to use, concerning installation, integration and administration It should be robust and scalable for serving real world applications It should be free of charge, so that anyone can profit from personalization features It should rely on a community-driven development == Uses == Although easyrec is a domain-agnostic, general purpose personalization system, the current Web service API is customized for providing online shops with item recommendations. Especially for small and medium enterprises, easyrec provides a low barrier entrance to personalization. == Features == A major feature of easyrec is a set of usage statistics and other business relevant information presented via an administration and management interface. Furthermore, the easyrec administrator is supported by a variety of administration and configuration functions including the manual import or adaptation of business rules. Integrators or developers benefit from the lightweight Web service APIs (REST and SOAP) as well as from the guided installation wizard. Concerning personalization functionality easyrec is providing the following services unpersonalized recommendations of the form "other users also bought/viewed/...", etc. personalized recommendation depending on individual preferences rankings such as "most bought items", "most viewed...", etc. Additionally, as an integration showcase, a MediaWiki extension was developed and is bundled with the application. Currently additional features like further recommender algorithms and a plugin-system are evaluated and prepared for integration into the easyrec system. == Architecture == The underlying architecture of easyrec is designed to be robust and scalable—separating time-consuming computations from the task of online assembling of recommendations. easyrec is designed as a multi-layer system consisting of a database layer as storage of user actions and pre-calculated business rules an application layer for hosting online and offline recommendation services and an API layer for various Web service interfaces. Moreover, the generator server contains different item association generators which create business rules that define a relation between two items.

For a Breath I Tarry

"For a Breath I Tarry" is a 1966 post-apocalyptic novelette by American writer Roger Zelazny, which was nominated for the Hugo Award for Best Novelette in 1967. Set in a future long after the self-extinction of humanity, the novelette recounts the tale of Frost, a sentient machine. Although humans have caused their own extinction, the sentient machines that they created continue the work of rebuilding a shattered Earth. Along the way, the story explores the differences between humanity and machines, the former experiencing the world qualitatively, while the latter doing so quantitatively. This difference is illustrated through philosophical conversations between Frost and another machine named Mordel. Frost's goal of becoming human, along with literary allusions, drives the plot and sets the tone of the novelette. These allusions include the first chapter of the Book of Job, in both situation and language, since verses are both quoted directly and paraphrased. In addition, the first three chapters of the Book of Genesis are echoed. Finally, Frost and Mordel enter into a Faustian bargain, though with better results than in the original story. The other major character is the Beta Machine, Frost's peer in the Southern Hemisphere. (Frost controls the Northern Hemisphere.) The novelette hints that though being a machine, Beta has a feminine personality. After Frost has succeeded in his millennium-long quest to become human (via recovered DNA), Beta agrees to join him in becoming human—suggesting the possibility of rebirth for the human race. The novelette has appeared in collections of Zelazny's works and in anthologies. The title is from a phrase in the poet A. E. Housman's collection A Shropshire Lad.