AI Image Generators

Explore the best AI Image Generators — independent reviews, comparisons, pricing and step-by-step how-to guides, curated by Aizhi.

  • Software agent

    Software agent

    In computer science, a software agent is a computer program that acts for a user or another program in a relationship of agency. The term agent is derived from the Latin agere (to do): an agreement to act on one's behalf. Such "action on behalf of" implies the authority to decide which, if any, action is appropriate. Some agents are colloquially known as bots, from robot. They may be embodied, as when execution is paired with a robot body, or as software such as a chatbot executing on a computer, such as a mobile device, e.g. Siri. Software agents may be autonomous or work together with other agents or people. Software agents interacting with people (e.g. chatbots, human-robot interaction environments) may possess human-like qualities such as natural language understanding and speech, personality or embody humanoid form (see Asimo). Related and derived concepts include intelligent agents (in particular exhibiting some aspects of artificial intelligence, such as reasoning), autonomous agents (capable of modifying the methods of achieving their objectives), distributed agents (being executed on physically distinct computers), multi-agent systems (distributed agents that work together to achieve an objective that could not be accomplished by a single agent acting alone), and mobile agents (agents that can relocate their execution onto different processors). == Concepts == The basic attributes of an autonomous software agent are that agents: are not strictly invoked for a task, but activate themselves, may reside in wait status on a host, perceiving context, may get to run status on a host upon starting conditions, do not require interaction of user, may invoke other tasks including communication. The concept of an agent provides a method of describing a complex software entity that is capable of acting with a certain degree of autonomy in order to accomplish tasks on behalf of its host. But unlike objects, which are defined in terms of methods and attributes, an agent is defined in terms of its behavior. Various authors have proposed different definitions of agents, these commonly include concepts such as: persistence: code is not executed on demand but runs continuously and decides for itself when it should perform some activity; autonomy: agents have capabilities of task selection, prioritization, goal-directed behavior, decision-making without human intervention; social ability: agents are able to engage other components through some sort of communication and coordination, they may collaborate on a task; reactivity: agents perceive the context in which they operate and react to it appropriately. === Distinguishing agents from programs === All agents are programs, but not all programs are agents. Contrasting the term with related concepts may help clarify its meaning. Franklin & Graesser (1997) discuss four key notions that distinguish agents from arbitrary programs: reaction to the environment, autonomy, goal-orientation and persistence. === Intuitive distinguishing agents from objects === Agents are more autonomous than objects. Agents have flexible behavior: reactive, proactive, social. Agents have at least one thread of control but may have more. === Distinguishing agents from expert systems === Expert systems are not coupled to their environment. Expert systems are not designed for reactive, proactive behavior. Expert systems do not consider social ability. === Distinguishing intelligent software agents from intelligent agents in AI === Intelligent agents (also known as rational agents) are not just computer programs: they may also be machines, human beings, communities of human beings (such as firms) or anything that is capable of goal-directed behavior. == Impact of software agents == Software agents may offer various benefits to their end users by automating complex or repetitive tasks. However, there are organizational and cultural impacts of this technology that need to be considered prior to implementing software agents. === Organizational impact === === Work contentment and job satisfaction impact === People like to perform easy tasks providing the sensation of success unless the repetition of the simple tasking is affecting the overall output. In general implementing software agents to perform administrative requirements provides a substantial increase in work contentment, as administering their own work does never please the worker. The effort freed up serves for a higher degree of engagement in the substantial tasks of individual work. Hence, software agents may provide the basics to implement self-controlled work, relieved from hierarchical controls and interference. Such conditions may be secured by application of software agents for required formal support. === Cultural impact === The cultural effects of the implementation of software agents include trust affliction, skills erosion, privacy attrition and social detachment. Some users may not feel entirely comfortable fully delegating important tasks to software applications. Those who start relying solely on intelligent agents may lose important skills, for example, relating to information literacy. In order to act on a user's behalf, a software agent needs to have a complete understanding of a user's profile, including his/her personal preferences. This, in turn, may lead to unpredictable privacy issues. When users start relying on their software agents more, especially for communication activities, they may lose contact with other human users and look at the world with the eyes of their agents. These consequences are what agent researchers and users must consider when dealing with intelligent agent technologies. === History === The concept of an agent can be traced back to Hewitt's Actor Model (Hewitt, 1977) - "A self-contained, interactive and concurrently-executing object, possessing internal state and communication capability." To be more academic, software agent systems are a direct evolution of Multi-Agent Systems (MAS). MAS evolved from Distributed Artificial Intelligence (DAI), Distributed Problem Solving (DPS) and Parallel AI (PAI), thus inheriting all characteristics (good and bad) from DAI and AI. John Sculley's 1987 "Knowledge Navigator" video portrayed an image of a relationship between end-users and agents. Being an ideal first, this field experienced a series of unsuccessful top-down implementations, instead of a piece-by-piece, bottom-up approach. The range of agent types is now (from 1990) broad: WWW, search engines, etc. == Examples of intelligent software agents == === Buyer agents (shopping bots) === Buyer agents travel around a network (e.g. the internet) retrieving information about goods and services. These agents, also known as 'shopping bots', work very efficiently for commodity products such as CDs, books, electronic components, and other one-size-fits-all products. Buyer agents are typically optimized to allow for digital payment services used in e-commerce and traditional businesses. === User agents (personal agents) === User agents, or personal agents, are intelligent agents that take action on your behalf. In this category belong those intelligent agents that already perform, or will shortly perform, the following tasks: Check your e-mail, sort it according to the user's order of preference, and alert you when important emails arrive. Play computer games as your opponent or patrol game areas for you. Assemble customized news reports for you. There are several versions of these, including CNN. Find information for you on the subject of your choice. Fill out forms on the Web automatically for you, storing your information for future reference Scan Web pages looking for and highlighting text that constitutes the "important" part of the information there Discuss topics with you ranging from your deepest fears to sports Facilitate with online job search duties by scanning known job boards and sending the resume to opportunities who meet the desired criteria Profile synchronization across heterogeneous social networks === Monitoring-and-surveillance (predictive) agents === Monitoring and surveillance agents are used to observe and report on equipment, usually computer systems. The agents may keep track of company inventory levels, observe competitors' prices and relay them back to the company, watch stock manipulation by insider trading and rumors, etc. For example, NASA's Jet Propulsion Laboratory has an agent that monitors inventory, planning, schedules equipment orders to keep costs down, and manages food storage facilities. These agents usually monitor complex computer networks that can keep track of the configuration of each computer connected to the network. A special case of monitoring-and-surveillance agents are organizations of agents used to automate decision-making process during tactical operations. The agents monitor the status of assets (ammunition, weapons available, platforms for transport, etc.) and receive goals from hi

    Read more →
  • Allen's interval algebra

    Allen's interval algebra

    Allen's interval algebra is a calculus for temporal reasoning that was introduced by James F. Allen in 1983. The calculus defines possible relations between time intervals and provides a composition table that can be used as a basis for reasoning about temporal descriptions of events. == Formal description == === Relations === The following 13 base relations capture the possible relations between two intervals. To see that the 13 relations are exhaustive, note that each point of X {\displaystyle X} can be at 5 possible locations relative to Y {\displaystyle Y} : before, at the start, within, at the end, after. These give 5 + 4 + 3 + 2 + 1 = 15 {\displaystyle 5+4+3+2+1=15} possible relative positions for the start and the end of X {\displaystyle X} . Of these, we cannot have X 0 = X 1 = Y 0 {\displaystyle X_{0}=X_{1}=Y_{0}} since X 0 < X 1 {\displaystyle X_{0} Read more →

  • Sriram Krishnan

    Sriram Krishnan

    Sriram Krishnan (born 1984) is a tech executive and White House official, currently serving as the Senior White House Policy Advisor on Artificial Intelligence. Krishnan was named a Time Person of the Year in 2025 as an "Architect of Artificial Intelligence." He was described in Time as providing the "wake-up call that we needed" to the other AI builders, leading to "a multiyear, $500 billion initiative dubbed Stargate" to push American-made AI, as well as numerous other AI initiatives. Also in December 2025, President Trump said of Krishnan, "without him, things on AI would not function well" and cited Krishnan as the leading figure behind the American executive order on AI. As the leader of the United States' policy team regarding artificial intelligence, Krishnan plays "a significant role in shaping the administration’s approach to AI and driving measures to advance federal adoption of AI." The role calls for removing barriers to AI adoption within the government, driving vendors toward solutions suitable for federal needs, designing sensible regulation of private-sector AI, and conducting "AI diplomacy". He has stated a policy goal of "reinvigorating US dominance in emerging technologies," including AI. He also represents the United States' interests in AI abroad, such as at the Paris AI Summit. He is one of the authors of the American "AI Action Plan" released in July, 2025, which he contends is necessary to win the "existential race with China" for AI supremacy. Krishnan, a U.S. citizen born in India, is also a venture capitalist, podcaster, product manager and author. Early in his career, he led product teams at Microsoft, Twitter, Yahoo!, Facebook, and Snap. In addition to his work as an investor and technologist, he and his wife, Aarthi Ramamurthy, rose to additional prominence in 2021 as podcast hosts. He served as a general partner at the venture capital firm Andreessen Horowitz and led its London office. In 2022, Krishnan announced that he was working with Elon Musk on the rebuilding of Twitter following Musk's acquisition of the company. On December 22, 2024, US president-elect Donald Trump announced that Krishnan would be Senior White House Policy Advisor on Artificial Intelligence in his incoming administration; in 2026 he joined the National Economic Council. == Early life and education == Krishnan was born in Chennai, India. He earned his Bachelor of Technology in Information Technology from SRM University (2001–2005), moved to the United States in 2007 to join Microsoft, and became a naturalized U.S. citizen in 2016. == Career == === Early career === In 2007, he began working at Microsoft where he served as a program manager for Visual Studio. At Facebook, Krishnan built the Facebook Audience Network, a competitive platform to Google's ad technologies. At Twitter, he led product and core user experience, driving a 20% annual user growth rate and launching a redesigned home page and events experience. === Andreessen Horowitz === Krishnan was appointed a general partner of American venture capital firm Andreessen Horowitz ("a16z") in February 2021. He was anticipated to serve consumer and social markets, however he has also theorized on the impact of "deep tech" on society. In 2023 he was appointed to lead the firm's London office, its first non-US location. The office is expected to serve Web3 investments as well as AI and other fields. Krishnan announced that he would leave the firm at the end of 2024. === Social media and AI === In 2022, various news media reported that Krishnan was assisting Elon Musk in the revamp of Twitter following Musk's takeover of the company. Additional reports named Krishnan as the leading candidate for the role of CEO of the newly private company. Krishnan penned a 2023 New York Times opinion column regarding social media, AI, and related fields. He predicted a rise in the number and diversity of online spaces due to decentralization and platforms like Farcaster, Bluesky and Mastodon. === Public office === In 2024, the Financial Times reported that Krishnan was active in international affairs, reintroducing Boris Johnson to Elon Musk, following Musk's nomination to the proposed Department of Government Efficiency. Krishnan was also reported as potentially leaving a16z at the end of the year to "be jumping into something I've wanted to spend [his] energy on," which was widely reported as being related to Musk's and Vivek Ramaswamy's work at DOGE. Others reported to be involved include Joe Lonsdale, Marc Andreesen, Bill Ackman, and Travis Kalanick. On December 22, 2024, US president-elect Donald Trump announced that he would be Senior White House Policy Advisor on Artificial Intelligence in his incoming administration. On February 6, 2025, Reuters reported that Krishnan would be accompanying Vice President Vance to the Paris AI Summit, a "major artificial intelligence" event later that month. Other members of the White House Office of Science and Technology Policy would also be joining the event with around 100 other countries to "focus on AI's potential." Krishnan joined a U.S. technology policy delegation to the Middle East in advance of President Trump's visit in May 2025. Conducting "AI diplomacy," Krishnan negotiated the spread of U.S. AI technologies with Crown Prince Mohammed bin Salman of Saudi Arabia, as well as other means to strengthen bilateral trade in artificial intelligence technologies. He explained that the goal of the diplomatic mission was that "we want American A.I. to spread." Krishnan, along with David Sacks and Michael Kratsios, were credited as authors of the American AI Action Plan released in July 2025. The plan is "the administration’s most significant policy directive" regarding artificial intelligence; it calls for financing to support the global spread of American AI models and a policy to enforce neutrality in models. The Washington Post referred to the plan as a "bold action to ensure that American AI remains at the cutting edge." The AI Action Plan is a continuation of prior efforts to reduce barriers to U.S. production of AI systems and the removal of rules that were considered to hinder such growth. Later in 2025, at the POLITICO AI & Tech Summit, Krishnan called national AI development "an existential race with China." He suggested that private companies are best positioned to create new models, quipping "let them cook." He further suggested that state-by-state regulation of AI technologies may hinder national AI competitiveness. Also in 2025, at the Axios AI+ Summit, Krishnan stated that the United States and China are in a race for AI supremacy, in which the winner will be judged by market share. Winning the race is a "business strategy" to Krishnan. Krishnan was named in the 2025 Time Person of the Year article as an "AI Architect". === The Aarthi and Sriram Show and other media === In early 2021, Krishnan and his wife, Aarthi Ramamurthy, launched a Clubhouse talk show that "focuses on organic conversations on anything from startups to venture capitalism and cryptocurrencies." An early appearance by Elon Musk on the Good Time Show was described as the first show that "broke Clubhouse" by rapidly exceeding the limit of 5,000 simultaneous users. The desire to interact with a larger community led to a variety of later innovations to allow streaming and replaying of Clubhouse chats. On that episode, Elon Musk grilled Robinhood CEO Vlad Tenev regarding the GameStop trading controversy. As of December 2021, the show had over 187,000 subscribers, plus 735,000 subscribers between Krishnan and Ramamurthy's personal Clubhouse accounts. Other guests have included Facebook CEO Mark Zuckerberg, Diane von Fürstenberg, Tony Hawk, MrBeast, and A.R. Rahman. In 2022, the Good Time Show moved to YouTube. It then evolved to a podcasting format under the name The Aarthi and Sriram Show, with both audio and video content. The Hollywood Reporter reported that the podcast had received more than 1 million downloads by early 2023. == Personal life == Krishnan is married to Aarthi Ramamurthy, co-host of The Aarthi and Sriram Show (formerly the Good Time Show) and a serial entrepreneur. They met in college in 2003 through a Yahoo! chat room related to a coding project and began dating in 2006 and eloped in 2010. == Awards == Time Person of the Year - 2025

    Read more →
  • Cleverpath AION Business Rules Expert

    Cleverpath AION Business Rules Expert

    Cleverpath AION Business Rules Expert (formerly Platinum AIONDS, and before that Trinzic AIONDS, and originally Aion) is an expert system and Business rules engine owned by Computer Associates by 2000. == History == The product was created around 1986 as "Aion" by the Aion company. In its initial release Aion was multi-platform and continues to be deliverable to the PC, Unixs, and Mainframe computer's. In addition it ties in seamlessly with a variety of databases including Oracle, Microsoft SQL Server, and ODBC. Aion was founded by Harry Reinstein, Larry Cohn, Garry Hallee, Scott Grinis, and others. From Scott Grinis's bio: Scott founded Aion, a company that developed expert systems and whose advanced inference engine and object technology were used by financial services and insurance firms to develop risk-scoring and underwriting applications. Harry Reinstein was quoted as saying: “Our biggest competitor was not AICorp, it was COBOL” Trinzic owned AION by 1993. A reference in a 1993 announcement indicates that Trinzic's formation was the result of a merger (paraphased): Trinzic set three development initiatives shortly after its formation from the merger of Aion Corp. and AICorp. The other initiatives -- adding SQL extensions to Aion/DS and evaluating the unbundling of some of that product's object-oriented programming capabilities -- are still active. Writing in 1993 Judith Hodges and Deborah Melewski give the date for the merger: Two rival artificial intelligence software vendors -- AICorp, Inc. and Aion Corp. -- merged in September 1992 to form Trinzic Corp. As part of the merger, redundant jobs were eliminated (20% of the combined work force), leaving a total work force of 245 employees worldwide. The new firm also boasted a combined installed base of more than 1,200 sites representing more than 10,000 software licenses. Although in the merger, technically AICorp bought Aion, as AICorp was a public company and Aion was still private, the reality was that Aion's leadership and technology subsumed AICorp's. Jim Gagnard, the CEO of Aion, became CEO of Trinzic and AICorp's flagship product, KBMS, was discontinued, while the Aion Development System continued to be enhanced and KBMS customers were assisted in converting to AIONDS, under the continued technical leadership of Garry Hallee and Scott Grinis. On August 1, 1994 Trinzic released version 6.4 of AIONDS saying, in part: Trinzic Corp., Palo Alto, Calif., has unveiled The Aion Development System (AionDS) Version 6.4, an upgrade to the company's development environment for building business process automation applications. Version 6.4 provides a visual development environment for Microsoft Windows or OS/2 PM applications using business rules. Trinzic was acquired by PLATINUM Technologies in 1995 which retained at least some of Trinzic's acquisitions Platinum Technologies was acquired by Computer Associates in 1999. CA changed the system's name to CA Aion Business Rules Expert" on or before 2009. It is currently (June 2011) at Release 11 on a wide range of supported platforms. == Applications using Aion == Aion has been used in a variety of industries including Energy, Insurance, Military, Aviation, and Banking. At one point an Aion expert system application written by Covia, LLC existed to do airport gate assignment. Colossus, a computer program, developed by Computer Sciences Corporation is the insurance industry’s leading expert system for assisting adjusters in the evaluation of bodily injury claims (aka "pain and suffering"). Colossus helps adjusters reduce variance in payouts on similar bodily injury claims through objective use of industry standard rules.

    Read more →
  • Automated machine learning

    Automated machine learning

    Automated machine learning (AutoML) is the process of automating the tasks of applying machine learning to real-world problems. It is the combination of automation and ML. AutoML potentially includes every stage from beginning with a raw dataset to building a machine learning model ready for deployment. AutoML was proposed as an artificial intelligence-based solution to the growing challenge of applying machine learning. The high degree of automation in AutoML aims to allow non-experts to make use of machine learning models and techniques without requiring them to become experts in machine learning. Automating the process of applying machine learning end-to-end additionally offers the advantages of producing simpler solutions, faster creation of those solutions, and models that often outperform hand-designed models. Common techniques used in AutoML include hyperparameter optimization, meta-learning and neural architecture search. == Comparison to the standard approach == In a typical machine learning application, practitioners have a set of input data points to be used for training. The raw data may not be in a form that all algorithms can be applied to. To make the data amenable for machine learning, an expert may have to apply appropriate data pre-processing, feature engineering, feature extraction, and feature selection methods. After these steps, practitioners must then perform algorithm selection and hyperparameter optimization to maximize the predictive performance of their model. If deep learning is used, the architecture of the neural network must also be chosen manually by the machine learning expert. Each of these steps may be challenging, resulting in significant hurdles to using machine learning. AutoML aims to simplify these steps for non-experts, and to make it easier for them to use machine learning techniques correctly and effectively. AutoML plays an important role within the broader approach of automating data science, which also includes challenging tasks such as data engineering, data exploration and model interpretation and prediction. == Targets of automation == Automated machine learning can target various stages of the machine learning process. Steps to automate are: Data preparation and ingestion (from raw data and miscellaneous formats) Column type detection; e.g., Boolean, discrete numerical, continuous numerical, or text Column intent detection; e.g., target/label, stratification field, numerical feature, categorical text feature, or free text feature Task detection; e.g., binary classification, regression, clustering, or ranking Feature engineering Feature selection Feature extraction Meta-learning and transfer learning Detection and handling of skewed data and/or missing values Model selection - choosing which machine learning algorithm to use, often including multiple competing software implementations Ensembling - a form of consensus where using multiple models often gives better results than any single model Hyperparameter optimization of the learning algorithm and featurization Neural architecture search Pipeline selection under time, memory, and complexity constraints Selection of evaluation metrics and validation procedures Problem checking Leakage detection Misconfiguration detection Analysis of obtained results Creating user interfaces and visualizations == Challenges and Limitations == There are a number of key challenges being tackled around automated machine learning. A big issue surrounding the field is referred to as "development as a cottage industry". This phrase refers to the issue in machine learning where development relies on manual decisions and biases of experts. This is contrasted to the goal of machine learning which is to create systems that can learn and improve from their own usage and analysis of the data. Basically, it's the struggle between how much experts should get involved in the learning of the systems versus how much freedom they should be giving the machines. However, experts and developers must help create and guide these machines to prepare them for their own learning. To create this system, it requires labor intensive work with knowledge of machine learning algorithms and system design. Additionally, other challenges include meta-learning and computational resource allocation.

    Read more →
  • Hyperion Data Center

    Hyperion Data Center

    The Richland Parish Data Center, nicknamed "Hyperion", is a planned artificial intelligence data center by Meta Platforms under-construction along Highway La. 183 in Richland Parish, Louisiana, just outside of Holly Ridge. It is one of a number of "titan clusters" being built in preparation for the emergence of AI superintelligence. Modern technological researchers disagree as to whether or not superintelligence will ever exist, though Meta CEO Mark Zuckerberg has expressed belief that its creation is inevitable. Current plans allot for the investment of $27 billion, as the structure is built from 2025 to 2030. == History == Meta was considering potential locations for their flagship data center in early 2024. Before being announced later in December, the plan was completely secret; meetings held between involved organisations and even government officials could only refer to it by the codename "Project Sucre" to protect it from potential corporate espionage. The data center was first announced on 04 December 2024, though its full scale was yet to be revealed. At first, Meta would not even claim responsibility for it, channelling all of its investments through the secret shell subsidiary Laidley LLC. We set out looking for a place where we could expand into gigawatts pretty quickly, and really get moving within that community on a large plot of land very quickly. We looked at finding very, very large contiguous plots of land that had access to the infrastructure that we need, the energy that we needed, and could move very, very quickly for us. The Louisiana-based Entergy Corporation, aiming for the facility to be built in its own backyard, negotiated a deal with the government of Louisiana to provide Meta with enormous tax breaks if they agreed to build Hyperion there. The Louisiana legislature responded by passing Act 730, which provides significant tax rebates on the purchase or lease of equipment for building and operating data centers. Meta found the arrangement acceptable, and bought a plot of land from the government. The government also had to further amend its laws to allow Meta to do this, as pre-existing policy forbade purchasing land directly from the government instead of hosting a public auction. The plot of land, originally called Franklin Farms, was purchased from the Franklin family in 2006 by the government, intending for it to be developed into an automotive manufacturing plant. Greater attention was brought to Hyperion it when Zuckerberg posted about the project on 14 July 2025 on Threads. The project subsequently caught media attention for its large size, as Zuckerberg's post portrayed the structure superimposed over Manhattan (pictured). The construction site spans 2,250 acres (9.1 km2) with a planned floor area of 4,000,000 square feet (371612 m2), making it the third largest building in the world by floor area upon completion. Meta initially reported the construction cost to be over $10 billion, but in October 2025, it announced a partnership with Blue Owl Capital providing for at least $27 billion. == Operation == The facility is expected to consume up to 5 gigawatts (GW) of computational power, more electricity than is currently used by the entire State of Louisiana. As part of their deal made with Meta, Entergy plans to be able to produce at least 3.8 GW of electricity for the operation. == Response to the project == Louisiana Governor Jeff Landry thanked Meta for their decision to build Hyperion in Louisiana, stating that it would "create opportunities for Louisiana workers to fill high-paying jobs of the future." and calling it "A New Chapter" for the state. The Louisiana Economic Development (LED) state agency further praised the project, citing Meta's estimate that it would create 1,500 jobs. Additionally, Richland Parish Supervisor Joey Evans stated that he was excited about the project. As part of their agreement with Meta, Energy announced their plan to increase electricity production state-wide. They say that this will result in the cost of energy reducing, though Entergy filings revealed in June 2025 that the cost of electricity would rise and be passed onto consumers. Meta also pledged to match all of Hyperion's power consumption with 100% environmentally friendly electricity production. So far, Entergy has begun building three gas-powered combined-cycle power plants and a substation in response to the project. Delta Community College announced in response to Hyperion's construction that it would expand its construction and trade programs. In January 2025, Business Facilities Magazine selected Hyperion for its annual Deal of the Year Platinum Award for 2024. Much of the initial backlash following Hyperion's announcement centered around the fast-tracked approval of the project by the state government, and scepticism around Meta's various claims (environmental friendliness, 100% renewable energy, local economic stimulation, price reductions). The Sierra Club criticised Meta for gentrifying the surrounding area, and was highly sceptical of their promise to keep it environmentally friendly. Environmental activist group Earthjustice attempted to have a subpoena of Meta approved to determine if they were compliant with environmental protection laws, though they were unsuccessful. Many residents of Holy Ridge have been critical of the construction, complaining about the increased construction vehicle traffic and intense gentrification. Another point of contention is Meta's continued reliance on out-of-state contractors in the facility's construction in spite of their previous commitment to "hire as many local folk as [we] possibly can." In spite of Entergy's continual denial that the facility's construction will not adversely affect the power grid, numerous electrical outages have been reported since construction began.

    Read more →
  • BRFplus

    BRFplus

    BRFplus (Business Rule Framework plus) is a business rule management system (BRMS) offered by SAP AG. BRFplus is part of the SAP NetWeaver ABAP stack. Therefore, all SAP applications that are based on SAP NetWeaver can access BRFplus within the boundaries of an SAP system. However, it is also possible to generate web services so that BRFplus rules can also be offered as a service in a SOA landscape, regardless of the software platform used by the service consumers. BRFplus development started as a supporting tool that was part of SAP Business ByDesign, an ERP solution targeted at small and medium size companies. By that time, the tool was called "Formula and Derivation Tool" (FDT). Later on, it was decided to maintain BRFplus on those codelines that serve as the basis for SAP Business Suite. With that, business rules that have been created for Business ByDesign can easily be taken over in a full-size SAP system where they are ready for use without any changes. == Overview == BRFplus offers a unified modeling and runtime environment for business rules that addresses both technical users (programmers, system administrators) as well as business users who take care of operational business processes (like procurement, bidding, tax form validation, etc.). The different requirements and usage scenarios of the different target groups can be covered with the help of the SAP authorization system and a user interface that can be individually customized. Being integrated into SAP NetWeaver, BRFplus-based applications can look at, and model, business rules from a strictly business-oriented perspective, rather than starting with the underlying technical artifacts. This is because the integration allows for direct access to the business objects available in the SAP dictionary (like customer, supplier, material, bill, etc.). In addition to the predefined expression types (decision table, decision tree, formula, database access, loops, etc.) and actions (sending e-mails, triggering a workflow, etc.), BRFplus can be extended by custom expression types. Also, direct calls of function modules as well as ABAP OO class methods are supported so that the entire range of the ABAP programming language is available for solving business tasks. BRFplus comes with an optional versioning mechanism. Versioning can be switched on and off for individual objects as well as for entire applications. Versioned business rules are needed in certain use cases for legal reasons, but they also allow for simulating the system behavior as it would have been at a particular point in time. Once the rule objects are in a consistent state and active, the system automatically generates ABAP OO classes that encapsulate the functional scope of the underlying rule object. This is done on an on-demand base and speeds up processing. The execution of functions as well as of single expressions can be simulated. The processing log of the simulation is useful for checking the implementation and for investigating problems. BRFplus applications can be exported and imported as an XML file. This is an easy way of creating a data backup. XML files can also be used for deploying rule applications throughout the company. == Main object types == === Application === The application object serves as a container for all the BRFplus objects that have been assembled to solve a particular business task. It is possible to define certain default settings on application level that are inherited by all objects that are created in the scope of that application. === Function === A function is used to connect a business application with the rule processing framework of BRFplus. The calling business application passes input values to the function which are then processed by the expressions and rulesets that are associated with the called function. The calculated result is then returned to the calling business application. === Expression types and action types === Boolean BRMS Connector Case Database Lookup Decision Table Decision Tree Formula Function Call Loop Procedure Call Random Number Search Tree Step Sequence Value Range1 XSL Transformation === Ruleset === A ruleset is a container for an arbitrary number of rule objects which in turn carry out the necessary calculations with the help of assigned expressions and actions. Instead of assigning an expression to a function, it is also possible to assign any number of rulesets to a function. When the function is called, all assigned rulesets are subsequently processed. === Data objects === BRFplus supports elementary data objects (text, number, boolean, time point, amount, quantity) as well as structures and tables. Structures can be nested. For all types of data objects it is possible to reference data objects that reside in the data dictionary of the backend system. With that, a BRFplus data object does not only inherit the type definition of the referenced object but can also access associated data like domain value lists or object documentation. === Other objects === With catalogs, it is possible to define business-specific subsets of the rule objects that reside in the system. This is helpful for hiding the complexity of a rule system, thus improving usability. Object filters are used by system administrators to ensure that for selected users, only a predefined subset of object types is visible. This is useful to enforce access rights as well as modeling policies. == Other BRM solutions offered by SAP == BRFplus is positioned as the successor product of an older business rule solution known as BRF (Business Rule Framework). For a longer transition phase, both solutions exist in parallel. However, an increasing number of SAP applications that used to be based on BRF are migrating to BRFplus. While BRFplus supports business rules for applications based on the SAP NetWeaver ABAP stack, SAP is offering another product named SAP NetWeaver Business Rules Management (BRM). BRM supports business rule modeling for the SAP NetWeaver Java stack. Both products do not compete. They are available in parallel and can be used in a collaborative approach to deal with use cases where both technology stacks are used in parallel. BRFplus comes with a special expression type that helps bridging the gap between the two different technologies. == Availability == BRFplus has been delivered to the public with SAP NetWeaver 7.0 Enhancement Package 1 for the first time. Being part of SAP NetWeaver, the usage of BRFplus is covered by the "SAP NetWeaver Foundation for Third Party Applications" license, with no additional costs. == Literature == Carsten Ziegler, Thomas Albrecht: BRFplus – Business Rule Management for ABAP Applications. Galileo Press 2011. ISBN 978-1-59229-293-6

    Read more →
  • Issue tree

    Issue tree

    An issue tree, also called logic tree, is a graphical breakdown of a question that dissects it into its different components vertically and that progresses into details as it reads to the right. Issue trees are useful in problem solving to identify the root causes of a problem as well as to identify its potential solutions. They also provide a reference point to see how each piece fits into the whole picture of a problem. == Types == According to professor of strategy Arnaud Chevallier, elaborating an approach used at McKinsey & Company, there are two types of issue trees: diagnostic ones and solution ones. Diagnostic trees break down a "why" key question, identifying all the possible root causes for the problem. Solution trees break down a "how" key question, identifying all the possible alternatives to fix the problem. == Rules == Four basic rules can help ensure that issue trees are optimal, according to Chevallier: Consistently answer a "why" or a "how" question Progress from the key question to the analysis as it moves to the right Have branches that are mutually exclusive and collectively exhaustive (MECE) Use an insightful breakdown The requirement for issue trees to be collectively exhaustive implies that divergent thinking is a critical skill. == Applications == === In management interviews === Issue trees are used to answer questions in case interviews for management consulting positions. A quantitative type of question, the market sizing question, requires the interviewee to estimate the size of a data group such as a specific segment of a population, an amount of objects, a company's revenues, or similar. The candidates are expected to use a structured and logical method of arriving at their answer, and using an issue tree provides a diagram to aid the candidate's logical reasoning. Issue trees are used for other types of case interview questions as well.

    Read more →
  • Plug computer

    Plug computer

    A plug computer is a small-form-factor computer whose chassis contains the AC power plug, and thus plugs directly into the wall. Alternatively, the computer may resemble an AC adapter or a similarly small device. Plug computers are often configured for use in the home or office as compact computer. == Description == Plug computers consist of a high-performance, low-power system-on-a-chip processor, with several I/O hardware ports (USB ports, Ethernet connectors, etc.). Most versions do not have provisions for connecting a display and are best suited to running media servers, back-up services, or file sharing and remote access functions; thus acting as a bridge between in-home protocols (such as Digital Living Network Alliance (DLNA) and Server Message Block (SMB)) and cloud-based services. There are, however, plug computer offerings that have analog VGA monitor and/or HDMI connectors, which, along with multiple USB ports, permit the use of a display, keyboard, and mouse, thus making them full-fledged, low-power alternatives to desktop and laptop computers. They typically run any of a number of Linux distributions. Plug computers typically consume little power and are inexpensive. == History == A number of other devices of this type began to appear at the 2009 Consumer Electronics Show. On January 6, 2009 CTERA Networks launched a device called CloudPlug that provides online backup at local disk speeds and overlays a file sharing service. The device also transforms any external USB hard drive into a network-attached storage device. On January 7, 2009, Cloud Engines unveiled the Pogoplug network access server. On January 8, 2009, Axentra announced availability of their HipServ platform. On February 23, 2009, Marvell Technology Group announced its plans to build a mini-industry around plug computers. On August 19, 2009, CodeLathe announced availability of their TonidoPlug network access server. On November 13, 2009 QuadAxis launched its plug computing device product line and development platform, featuring the QuadPlug and QuadPC and running QuadMix, a modified Linux. On January 5, 2010, Iomega announced their iConnect network access server. On January 7, 2010 Pbxnsip launched its plug computing device the sipJack running pbxnsip: an IP Communications platform.

    Read more →
  • Resilience (mathematics)

    Resilience (mathematics)

    In mathematical modeling, resilience refers to the ability of a dynamical system to recover from perturbations and return to its original stable steady state. It is a measure of the stability and robustness of a system in the face of changes or disturbances. If a system is not resilient enough, it is more susceptible to perturbations and can more easily undergo a critical transition. A common analogy used to explain the concept of resilience of an equilibrium is one of a ball in a valley. A resilient steady state corresponds to a ball in a deep valley, so any push or perturbation will very quickly lead the ball to return to the resting point where it started. On the other hand, a less resilient steady state corresponds to a ball in a shallow valley, so the ball will take a much longer time to return to the equilibrium after a perturbation. The concept of resilience is particularly useful in systems that exhibit tipping points, whose study has a long history that can be traced back to catastrophe theory. While this theory was initially overhyped and fell out of favor, its mathematical foundation remains strong and is now recognized as relevant to many different systems. == History == In 1973, Canadian ecologist C. S. Holling proposed a definition of resilience in the context of ecological systems. According to Holling, resilience is "a measure of the persistence of systems and of their ability to absorb change and disturbance and still maintain the same relationships between populations or state variables". Holling distinguished two types of resilience: engineering resilience and ecological resilience. Engineering resilience refers to the ability of a system to return to its original state after a disturbance, such as a bridge that can be repaired after an earthquake. Ecological resilience, on the other hand, refers to the ability of a system to maintain its identity and function despite a disturbance, such as a forest that can regenerate after a wildfire while maintaining its biodiversity and ecosystem services. With time, the once well-defined and unambiguous concept of resilience has experienced a gradual erosion of its clarity, becoming more vague and closer to an umbrella term than a specific concrete measure. == Definition == Mathematically, resilience can be approximated by the inverse of the return time to an equilibrium given by resilience ≡ − Re ( λ 1 ( A ) ) {\displaystyle {\text{resilience}}\equiv -{\text{Re}}(\lambda _{1}({\textbf {A}}))} where λ 1 {\textstyle \lambda _{1}} is the maximum eigenvalue of matrix A {\textstyle {\textbf {A}}} . The largest this value is, the faster a system returns to the original stable steady state, or in other words, the faster the perturbations decay. == Applications and examples == In ecology, resilience might refer to the ability of the ecosystem to recover from disturbances such as fires, droughts, or the introduction of invasive species. A resilient ecosystem would be one that is able to adapt to these changes and continue functioning, while a less resilient ecosystem might experience irreversible damage or collapse. The exact definition of resilience has remained vague for practical matters, which has led to a slow and proper application of its insights for management of ecosystems. In epidemiology, resilience may refer to the ability of a healthy community to recover from the introduction of infected individuals. That is, a resilient system is more likely to remain at the disease-free equilibrium after the invasion of a new infection. Some stable systems exhibit critical slowing down where, as they approach a basic reproduction number of 1, their resilience decreases, hence taking a longer time to return to the disease-free steady state. Resilience is an important concept in the study of complex systems, where there are many interacting components that can affect each other in unpredictable ways. Mathematical models can be used to explore the resilience of such systems and to identify strategies for improving their resilience in the face of environmental or other changes. For example, when modelling networks it is often important to be able to quantify network resilience, or network robustness, to the loss of nodes. Scale-free networks are particularly resilient since most of their nodes have few links. This means that if some nodes are randomly removed, it is more likely that the nodes with fewer connections are taken out, thus preserving the key properties of the network.

    Read more →
  • Daisy Intelligence

    Daisy Intelligence

    Daisy Intelligence is a Canadian artificial intelligence (AI) company that provides data analysis services to help retailers, mainly grocers and supermarkets, to determine optimal pricing and promotional mix. The company also helps insurance companies detect fraudulent claims. The company uses a subset of AI known as reinforcement learning. In October 2019, the company moved from the suburban Vaughan, Ontario, to downtown Toronto, joining other AI and technology startups concentrated in the King Street East area. In 2019, the company was ranked No. 39 on The Globe and Mail's annual list of Canada's "top growing companies by three-year revenue growth."

    Read more →
  • Lighthill report

    Lighthill report

    Artificial Intelligence: A General Survey, commonly known as the Lighthill report, is a scholarly article by James Lighthill, published in Artificial Intelligence: a paper symposium in 1973. It was compiled by Lighthill for the British Science Research Council as an evaluation of academic research in the field of artificial intelligence (AI). The report gave a very pessimistic prognosis for many core aspects of research in this field, stating that "In no part of the field have the discoveries made so far produced the major impact that was then promised". It "formed the basis for the decision by the British government to end support for AI research in most British universities", contributing to an AI winter in the United Kingdom. == Publication history == It was commissioned by the SRC in 1972 for Lighthill to "make a personal review of the subject [of AI]". Lighthill completed the report in July. The SRC discussed the report in September, and decided to publish it, together with some alternative points of view by Stuart Sutherland, Roger Needham, Christopher Longuet-Higgins, and Donald Michie. The SRC's decision to invite the report was partly a reaction to high levels of discord within the University of Edinburgh's Department of Artificial Intelligence, one of the earliest and biggest centres for AI research in the UK. On May 9, 1973, Lighthill debated several leading AI researchers (Donald Michie, John McCarthy, Richard Gregory) at the Royal Institution in London concerning the report. == Content == While the report was supportive of research into the simulation of neurophysiological and psychological processes, it was "highly critical of basic research in foundational areas such as robotics and language processing". The report stated that AI researchers had failed to address the issue of combinatorial explosion when solving problems within real-world domains. That is, the report states that whilst AI techniques may have worked within the scope of small problem domains, the techniques would not scale up well to solve more realistic problems. The report represents a pessimistic view of AI that began after early excitement in the field. The report divides AI research into three categories: Advanced Automation ("A"): applications of AI, such as optical character recognition, mechanical component design and manufacture, missile perception and guidance, etc. Computer-based Central Nervous System research ("C"): building computational models of human brains (neurobiology) and behavior (psychology). Bridge, or Building Robots ("B"): research that combines categories A and C. This category is intentionally vague. Projects in category A had had some success, but only in restricted domains where a large quantity of detailed knowledge was used in designing the program. This was disappointing to researchers who hoped for generic methods. Due to the issue of the combinatorial explosion, the amount of detailed knowledge required by the program quickly grew too large to be entered by hand, thus restricting projects to restricted domains. Projects in category C had had some measure of success. Artificial neural networks were successfully used to model neurobiological data. SHRDLU demonstrated that human use of language, even in fine details, depends on the semantics or knowledge, and is not purely syntactical. This was influential in psycholinguistics. Attempts to extend SHRDLU to larger domains of discourse was considered impractical, again due to the issue of the combinatorial explosion. Projects in category B were held to be failures. One important project, that of "programming and building a robot that would mimic human ability in a combination of eye-hand co-ordination and common-sense problem solving", was considered entirely disappointing. Similarly, chess playing programs were no better than human amateurs. Due to the combinatorial explosion, the run-time of general algorithms quickly grew impractical, requiring detailed problem-specific heuristics. The report stated that it was expected that within the next 25 years, category A would simply become applied technologies engineering, C would integrate with psychology and neurobiology, while category B would be abandoned.

    Read more →
  • Moral outsourcing

    Moral outsourcing

    Moral outsourcing is the placing of responsibility for ethical decision-making onto external entities, often algorithms. The term is often used in discussions of computer science and algorithmic fairness, but it can apply to any situation in which one appeals to outside agents in order to absolve themselves of responsibility for their actions. In this context, moral outsourcing specifically refers to the tendency of society to blame technology, rather than its creators or users, for any harm it may cause. == Definition == The term "moral outsourcing" was first coined by Dr. Rumman Chowdhury, a data scientist concerned with the overlap between artificial intelligence and social issues. Chowdhury used the term to describe looming fears of a so-called “Fourth Industrial Revolution” following the rise of artificial intelligence. Moral outsourcing is often applied by technologists to shrink away from their part in building offensive products. In her TED Talk, Chowdhury gives the example of a creator excusing their work by saying they were simply doing their job. This is a case of moral outsourcing and not taking ownership for the consequences of creation. When it comes to AI, moral outsourcing allows for creators to decide when the machine is human and when it is a computer - shifting the blame and responsibility of moral plights off of the technologists and onto the technology. Conversations around AI and bias and its impacts require accountability to bring change. It is difficult to address these biased systems if their creators use moral outsourcing to avoid taking any responsibility for the issue. One example of moral outsourcing is the anger that is directed at machines for “taking jobs away from humans” rather than companies for employing that technology and jeopardizing jobs in the first place. The term "moral outsourcing" refers to the concept of outsourcing, or enlisting an external operation to complete specific work for another organization. In the case of moral outsourcing, the work of resolving moral dilemmas or making choices according to an ethical code is supposed to be conducted by another entity. == Real-world applications == In the medical field, AI is increasingly involved in decision-making processes about which patients to treat, and how to treat them. The responsibility of the doctor to make informed decisions about what is best for their patients is outsourced to an algorithm. Sympathy is also noted to be an important part of medical practice; an aspect that artificial intelligence, glaringly, is missing. This form of moral outsourcing is a major concern in the medical community. Another field of technology in which moral outsourcing is frequently brought up is autonomous vehicles. California Polytechnic State University professor Keith Abney proposed an example scenario: "Suppose we have some [troublemaking] teenagers, and they see an autonomous vehicle, they drive right at it. They know the autonomous vehicle will swerve off the road and go off a cliff, but should it?" The decision of whether to sacrifice the autonomous vehicle (and any passengers inside) or the vehicle coming at it will be written into the algorithms defining the car's behavior. In the case of moral outsourcing, the responsibility of any damage caused by an accident may be attributed to the autonomous vehicle itself, rather than the creators who wrote the protocol the vehicle will use to "decide" what to do. Moral outsourcing is also used to delegate the consequences of predictive policing algorithms to technology, rather than the creators or the police. There are many ethical concerns with predictive policing due to the fact that it results in the over-policing of low income and minority communities. In the context of moral outsourcing, the positive feedback loop of sending disproportionate police forces into minority communities is attributed to the algorithm and the data being fed into this system--rather than the users and creators of the predictive policing technology. == Outside of technology == === Religion === Moral outsourcing is also commonly seen in appeals to religion to justify discrimination or harm. In his book What It Means to be Moral, sociologist Phil Zuckerman contradicts the popular religious notion that morality comes from God. Religion is oftentimes cited as a foundation for a moral stance without any tangible relation between the religious beliefs and personal stance. In these cases, religious individuals will "outsource" their personal beliefs and opinions by claiming that they are a result of their religious identification. This is seen where religion is cited as a factor for political beliefs, medical beliefs, and in extreme cases an excuse for violence. === Manufacturing === Moral outsourcing can also be seen in the business world in terms of manufacturing goods and avoiding environmental responsibility. Some companies in the United States will move their production process to foreign countries with more relaxed environmental policies to avoid the pollution laws that exist in the US. A study by the Harvard Business Review found that "in countries with tight environmental regulation, companies have 29% lower domestic emissions on average. On the other hand, such a tightening in regulation results in 43% higher emissions abroad." The consequences of higher pollution rates are then attributed to the loose regulations in these countries, rather than on the companies themselves who purposefully moved into these areas to avoid strict pollution policy.

    Read more →
  • Aidan Gomez

    Aidan Gomez

    Aidan Gomez is a British-Canadian computer scientist working in the field of artificial intelligence, with a focus on natural language processing. He is the co-founder and CEO of the technology company Cohere. == Early life and education == Gomez grew up in Brighton, Ontario. He graduated from the University of Toronto with a bachelor's degree in computer science and mathematics. He was pursuing a PhD in computer science from the University of Oxford. He paused his studies to launch Cohere. He was granted the PhD in 2024. == Career == In 2017, as a 20 year-old intern at Google Brain, Gomez was one of eight authors of the research paper "Attention Is All You Need", which is credited with changing the AI industry and helping lead to the creation of ChatGPT. The paper proposed a novel deep learning architecture called the transformer, that enables machine learning models to analyze large amounts of data for patterns, and then use those patterns to make predictions while leveraging GPU parallelization. It has been commonly adopted for training large language models and in the development of generative AI. In the same year, Gomez founded FOR.ai, a program to help researchers learn machine learning techniques in a collaborative format. An outgrowth of this project was Cohere For AI (now Cohere Labs), which released Aya, an open-source multilingual LLM. As a PhD student, Gomez worked as a machine learning researcher at Google Brain. At that time, he co-authored the paper "One Model to Learn Them All" about multi-task learning by a single neural network. In 2019, Gomez left Google Brain to launch Cohere, an enterprise-focused company that helps businesses implement AI into chatbots, search engines, and other products. As of Sept 2025, Cohere has raised about US$1.6 billion at valuation north of $7 billion, as Gomez leads the company as its CEO. Gomez was named to the 2023 Time 100/AI list of the most influential people in the field of artificial intelligence. He and his fellow Cohere founders Ivan Zhang and Nick Frosst were named number 1 on 2023 Maclean's AI Trailblazers Power List. In April 2025, Gomez was elected to the board of Rivian. == Views on AI == Gomez has stated that warnings regarding the existential risk from artificial intelligence are overblown, and that real risks involve the automated spread of misinformation on social media. He said that the United States would win the AI arms race over China.

    Read more →
  • Tree (abstract data type)

    Tree (abstract data type)

    In computer science, a tree is a widely used abstract data type that represents a hierarchical tree structure with a set of connected nodes. Each node in the tree can be connected to many children (depending on the type of tree), but must be connected to exactly one parent, except for the root node, which has no parent (i.e., the root node as the top-most node in the tree hierarchy). These constraints mean there are no cycles or "loops" (no node can be its own ancestor), and also that each child can be treated like the root node of its own subtree, making recursion a useful technique for tree traversal. In contrast to linear data structures, many trees cannot be represented by relationships between neighboring nodes (parent and children nodes of a node under consideration, if they exist) in a single straight line (called edge or link between two adjacent nodes). Binary trees are a commonly used type, which constrain the number of children for each parent to at most two. When the order of the children is specified, this data structure corresponds to an ordered tree in graph theory. A value or pointer to other data may be associated with every node in the tree, or sometimes only with the leaf nodes, which have no children nodes. The abstract data type (ADT) can be represented in a number of ways, including a list of parents with pointers to children, a list of children with pointers to parents, or a list of nodes and a separate list of parent-child relations (a specific type of adjacency list). Representations might also be more complicated, for example using indexes or ancestor lists for performance. Trees as used in computing are similar to but can be different from mathematical constructs of trees in graph theory, trees in set theory, and trees in descriptive set theory. == Terminology == A node is a structure which may contain data and connections to other nodes, sometimes called edges or links. Each node in a tree has zero or more child nodes, which are below it in the tree (by convention, trees are drawn with descendants going downwards). A node that has a child is called the child's parent node (or superior). All nodes have exactly one parent, except the topmost root node, which has none. A node might have many ancestor nodes, such as the parent's parent. Child nodes with the same parent are sibling nodes. Typically siblings have an order, with the first one conventionally drawn on the left. Some definitions allow a tree to have no nodes at all, in which case it is called empty. An internal node (also known as an inner node, inode for short, or branch node) is any node of a tree that has child nodes. Similarly, an external node (also known as an outer node, leaf node, or terminal node) is any node that does not have child nodes. The height of a node is the length of the longest downward path to a leaf from that node. The height of the root is the height of the tree. The depth of a node is the length of the path to its root (i.e., its root path). Thus the root node has depth zero, leaf nodes have height zero, and a tree with only a single node (hence both a root and leaf) has depth and height zero. Conventionally, an empty tree (tree with no nodes, if such are allowed) has height −1. Each non-root node can be treated as the root node of its own subtree, which includes that node and all its descendants. Other terms used with trees: Neighbor Parent or child. Ancestor A node reachable by repeated proceeding from child to parent. Descendant A node reachable by repeated proceeding from parent to child. Also known as subchild. Degree For a given node, its number of children. A leaf, by definition, has degree zero. Degree of tree The degree of a tree is the maximum degree of a node in the tree. Distance The number of edges along the shortest path between two nodes. Level The level of a node is the number of edges along the unique path between it and the root node. This is the same as depth. Width The number of nodes in a level. Breadth The number of leaves. Complete tree A tree with every level filled, except the last. Forest A set of one or more disjoint trees. Ordered tree A rooted tree in which an ordering is specified for the children of each vertex. Size of a tree Number of nodes in the tree. == Common operations == Enumerating all the items Enumerating a section of a tree Searching for an item Adding a new item at a certain position on the tree Deleting an item Pruning: Removing a whole section of a tree Grafting: Adding a whole section to a tree Finding the root for any node Finding the lowest common ancestor of two nodes === Traversal and search methods === Stepping through the items of a tree, by means of the connections between parents and children, is called walking the tree, and the action is a walk of the tree. Often, an operation might be performed when a pointer arrives at a particular node. A walk in which each parent node is traversed before its children is called a pre-order walk; a walk in which the children are traversed before their respective parents are traversed is called a post-order walk; a walk in which a node's left subtree, then the node itself, and finally its right subtree are traversed is called an in-order traversal. (This last scenario, referring to exactly two subtrees, a left subtree and a right subtree, assumes specifically a binary tree.) A level-order walk effectively performs a breadth-first search over the entirety of a tree; nodes are traversed level by level, where the root node is visited first, followed by its direct child nodes and their siblings, followed by its grandchild nodes and their siblings, etc., until all nodes in the tree have been traversed. == Representations == There are many different ways to represent trees. In working memory, nodes are typically dynamically allocated records with pointers to their children, their parents, or both, as well as any associated data. If of a fixed size, the nodes might be stored in a list. Nodes and relationships between nodes might be stored in a separate special type of adjacency list. In relational databases, nodes are typically represented as table rows, with indexed row IDs facilitating pointers between parents and children. Nodes can also be stored as items in an array, with relationships between them determined by their positions in the array (as in a binary heap). A binary tree can be implemented as a list of lists: the head of a list (the value of the first term) is the left child (subtree), while the tail (the list of second and subsequent terms) is the right child (subtree). This can be modified to allow values as well, as in Lisp S-expressions, where the head (value of first term) is the value of the node, the head of the tail (value of second term) is the left child, and the tail of the tail (list of third and subsequent terms) is the right child. Ordered trees can be naturally encoded by finite sequences, for example with natural numbers. == Examples of trees and non-trees == == Type theory == As an abstract data type, the abstract tree type T with values of some type E is defined, using the abstract forest type F (list of trees), by the functions: value: T → E children: T → F nil: () → F node: E × F → T with the axioms: value(node(e, f)) = e children(node(e, f)) = f In terms of type theory, a tree is an inductive type defined by the constructors nil (empty forest) and node (tree with root node with given value and children). == Mathematical terminology == Viewed as a whole, a tree data structure is an ordered tree, generally with values attached to each node. Concretely, it is (if required to be non-empty): A rooted tree with the "away from root" direction (a more narrow term is an "arborescence"), meaning: A directed graph, whose underlying undirected graph is a tree (any two vertices are connected by exactly one simple path), with a distinguished root (one vertex is designated as the root), which determines the direction on the edges (arrows point away from the root; given an edge, the node that the edge points from is called the parent and the node that the edge points to is called the child), together with: an ordering on the child nodes of a given node, and a value (of some data type) at each node. Often trees have a fixed (more properly, bounded) branching factor (outdegree), particularly always having two child nodes (possibly empty, hence at most two non-empty child nodes), hence a "binary tree". Allowing empty trees makes some definitions simpler, some more complicated: a rooted tree must be non-empty, hence if empty trees are allowed the above definition instead becomes "an empty tree or a rooted tree such that ...". On the other hand, empty trees simplify defining fixed branching factor: with empty trees allowed, a binary tree is a tree such that every node has exactly two children, each of which is a tree (possibly empty). == Applications == Trees are commonly used to represent or manipulate hierarchical data in ap

    Read more →