Region partitioning with unit merging using spanning tree
By dividing geographical areas into units and building graphs in position-based parallel reality games, using the maximum spanning tree algorithm to segment continuous segments, the problem of unbalanced area division is solved and richer gameplay coverage is achieved.
Patent Information
- Application Number
- CN202510123820.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-12-13
- Filing Date
- 2020-12-03
- Publication Date
- 2025-03-18
AI Technical Summary
In position-based parallel real-life games, the prior art is difficult to balance area division, resulting in fewer gameplay covered by some areas while others cover more gameplay.
By dividing geographical areas into units and building graphs of nodes and edges using real-world data, the graph is divided into continuous segments using the maximum spanning tree algorithm to define a more balanced region.
A more balanced area division is achieved, ensuring that each area covers a richer gameplay and improving player experience.
Smart Images

Figure CN119633357A_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with Chinese national application number 202080095430.X, application date December 3, 2021, and invention name “Regional partitioning using unit merging using a spanning tree”. Technical Field
[0002] The present disclosure relates generally to region partitioning, and particularly to identifying different regions for use in location-based games. Background Art
[0003] Location-based games use the real world as their geographic environment. Parallel reality games are location-based games that use a virtual world that is parallel to the real world's geographic environment. The parallel virtual world can span the entire real world, and players from all over the world can interact and perform various game objectives in the parallel virtual world by navigating and performing actions in the real world. In order to allow players with similar locations to interact with each other, the virtual world (or geographic areas in the virtual world) can be divided into regions, each of which can be associated with different virtual elements and game objectives. However, the gameplay may be more intensive in some areas of the virtual world than in other areas. If the regions are determined based solely on the region, the regions may be unbalanced, with some areas covering less gameplay than other areas. Summary of the invention
[0004] In location-based parallel reality games, players navigate a virtual world by moving in the real world using a location-aware client device such as a smartphone. As players navigate the virtual world, they can interact with virtual elements and participate in virtual experiences. These virtual elements and virtual experiences can be placed in strategically located areas within the virtual world. These areas can rationalize play between similarly located players by taking into account real-world data corresponding to real-world locations mapped to the virtual world, such as population density data, player activity heat maps, point of interest locations, and terrain data.
[0005] Many client devices used by players in parallel reality games may include positioning devices that track player location information as the player moves in the real world while playing the parallel reality game and interacts with virtual elements in the parallel reality game. In various embodiments, the client device sends the player location information to the server hosting the parallel reality game. The game server can use the player location information and other real world data to determine how to divide the virtual world into regions for game play.
[0006] In one embodiment, the game server determines the regions for the geographic region by dividing the geographic region into cells, assigning real-world data to each cell, and building a graph of edges and nodes. The game server can segment the graph into continuous segments based on the real-world data, and can define the regions for the geographic region based on the continuous segments. The game server can store the regions in a data repository such as a game database, and update the regions over time as it receives more real-world data.
[0007] These and other features, aspects and advantages may be better understood with reference to the following description and the appended claims. The accompanying drawings illustrate specific embodiments and together with the description are used to illustrate various principles. However, the drawings should not be considered limiting. Instead, the scope of protection should be determined according to the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Figure 1 is a block diagram illustrating a networked computing environment suitable for operating a location-based game according to one embodiment.
[0009] Figure 2 According to an embodiment Figure 1 A block diagram of a client device is shown in FIG.
[0010] Figure 3 According to an embodiment Figure 1 Block diagram of the game server shown in .
[0011] Figure 4A-4B Illustrated is a graph that converts cells of a subset of geographic regions into nodes and edges, according to one embodiment.
[0012] Figure 5A-5H An example of segmenting a graph of a geographic area into consecutive segments is illustrated according to one embodiment.
[0013] Figure 6A-6G An example of segmenting a first-order graph to determine a second-order graph is illustrated according to one embodiment.
[0014] Figure 7 is a flow chart illustrating a process of dividing a geographic region into regions according to one embodiment.
[0015] Figure 8 is a block diagram according to one embodiment, which illustrates a suitable Figure 1 The example computer used in the network computing environment. DETAILED DESCRIPTION
[0016] Reference will now be made to several embodiments, examples of which are illustrated in the accompanying drawings. Note that, wherever feasible, identical or similar reference numerals are used in the drawings to indicate identical or similar functions. In addition, where similar elements are identified by reference numerals followed by letters, reference to numbers alone in the subsequent description may refer to all such elements, any one such element, or any combination of such elements. Those skilled in the art will readily appreciate from the following description that alternative embodiments of the structures and methods may be employed without departing from the principles described.
[0017] Overview
[0018] Generally, the present disclosure relates to determining the region of a geographic region. In various embodiments, a parallel reality game occurs in a virtual world mapped to a real-world location, wherein the virtual world (and therefore the real world) is divided into multiple regions. The features of a parallel reality game may be related to a region. For example, each region may have its own chat room, the game goal may involve players in different regions competing with each other (e.g., determining which region obtains the most points within a given time period and providing rewards to players in the winning region), and the virtual elements present in the region may be different (e.g., the type of virtual elements in the region may be bound to the real-world attributes of the region (such as urban / rural areas, altitude, the presence of water, the presence of green space, etc.). Those skilled in the art may recognize other features of a parallel reality game that may be determined in whole or in part based on dividing the world into regions.
[0019] A game server may host a location-based parallel reality game having a player play area that includes a virtual environment having a geographic environment that is parallel to at least a portion of a real-world geographic environment. A player may navigate a virtual space in the virtual world by navigating a corresponding geographic space in the real world. In particular, a player may navigate a range of coordinates defining a virtual space in the virtual world by navigating a range of geographic coordinates in the real world.
[0020] In one embodiment, a game server associated with a parallel reality game can divide a geographic region within a virtual world into regions. The game server can use these regions to distribute virtual elements and / or virtual experiences throughout the virtual world. In order to determine the regions of a geographic region, the game server can access real-world data describing the geographic region. The real-world data can include population density data, player density data, point of interest data, and terrain data.
[0021] The game server can divide the geographic area into units representing parts of the geographic area and assign real-world data to the units. The game server uses the units and corresponding real-world data to construct a graph of nodes and edges representing the geographic area. Each node represents a subset of the real-world data corresponding to the unit, and each edge represents the difference in the real-world data between the units connected by the edge. Starting from one of the nodes in the graph, the game server can create a continuous segment of the graph by creating a maximum spanning tree of the graph. The game server groups the interconnected nodes in the maximum spanning tree into groups of nodes that jointly meet a set of criteria. The game server can create new continuous segments for the rest of the graph until all graphs are divided into continuous segments. The game server can define each continuous segment as a region, or create a new graph for the geographic area corresponding to the continuous segment to further divide it into a new set of continuous segments. Exemplary location-based parallel reality game system
[0022] An exemplary computer-implemented location-based gaming system according to an exemplary embodiment of the present disclosure will now be described. This subject matter will be discussed with reference to a parallel reality game. A parallel reality game is a location-based game having a virtual world geography that is parallel to at least a portion of the real world geography, such that player movement and actions in the real world affect actions in the virtual world, and vice versa. Using the disclosure provided herein, one skilled in the art will appreciate that the subject matter of the present disclosure is equally applicable to other gaming systems.
[0023] Figure 1 An exemplary computer-implemented location-based gaming system 100 configured according to one embodiment is illustrated. The location-based gaming system 100 provides multiple players with interactions in a virtual world having a geographic environment parallel to the real world. In particular, geographic regions in the real world can be directly linked or mapped to corresponding regions in the virtual world. Players can move in the virtual world by moving to various geographic locations in the real world. For example, the system 100 can track the position of the player in the real world and update the position of the player in the virtual world based on the current position of the player in the real world. For example, a coordinate system in the real world (e.g., longitude and latitude) can be mapped to a coordinate system in the virtual world (e.g., x / y coordinates, virtual longitude and latitude, etc.).
[0024] exist Figure 1 In the illustrated embodiment, the system 100 has a client-server architecture in which a game server 110 communicates with one or more client devices 120 via a network 130. Figure 11, three client devices 120 are illustrated, but any number of client devices 120 may be connected to the game server 110 via the network 130. In other embodiments, the distributed location-based gaming system 100 includes different or additional elements. Furthermore, functionality may be distributed among the elements in a manner different from that described.
[0025] The game server 110 hosts the master state of the location-based game and provides game status updates (e.g., based on actions taken by other players in the game, changes in real-world conditions, changes in game state or conditions, etc.) to the player's client device 120. The game server 110 receives and processes input from players in the location-based game. Players can be identified by a username or player ID (e.g., a unique numeric or alphanumeric string), which the player's client device 120 sends to the game server 110 along with the player's input.
[0026] In various embodiments, the game server 110 determines an area for a parallel reality game based on a snapshot of real-world data, the real-world data including device location information indicating the player's location in the real world. The game server 110 divides the geographic area of the parallel reality game into units (e.g., S2 units) and assigns real-world data to each unit. The game server 110 creates a graph of nodes and edges based on the units and the corresponding real-world data. The game server 110 selects a node and determines a set of connected nodes, each connected node being connected by an edge in the graph. The game server 110 merges the selected node and the set of connected nodes together into a continuous segment. The game server 110 may use the continuous segment as an area for the parallel reality game, may further split the continuous segment, or may adjust the continuous segment to meet one or more criteria. Refer to the following. Figure 3 Various embodiments of game server 110 are described in more detail.
[0027] The client device 120 is a computing device that a player can use to interact with the game server 110. For example, the client device 120 can be a smart phone, a portable gaming device, a tablet computer, a personal digital assistant (PDA), a cellular phone, a navigation system, a handheld GPS system, or other such device. The client device 120 can execute software (e.g., a game application or app) to allow the player to interact with the virtual world. The client device 120 can also include hardware, software, or both for providing a user interface for the chat room. Users can choose to join the chat room and send and receive messages via the user interface. Figure 2 Various embodiments of client device 120 are described in further detail.
[0028] The network 130 may be any type of communication network, such as a local area network (e.g., an intranet), a wide area network (e.g., the Internet), or some combination thereof. The network may also include a direct connection between the client 120 and the game server 110. Typically, the communication between the game server 110 and the client 120 may be carried via a network interface using any type of wired and / or wireless connection, using various communication protocols (e.g., TCP / IP, HTTP, S1v1TP, FTP), encodings or formats (e.g., HTML, JSON, XML), and / or protection schemes (e.g., VPN, secure HTTP, SSL).
[0029] Figure 2 According to an embodiment Figure 1 . Because the game system 100 is for location-based games, the client device 120 is preferably a portable computing device that can be easily carried or otherwise transported with the player, such as a smart phone or other portable device. The player can interact with the virtual world simply by carrying or transporting the client device 120 in the real world. The client device 120 may include a positioning device 210 that monitors the positioning of the client device 120 in the real world. The positioning device 210 can be any device or circuit device for monitoring the positioning of the client 120. For example, the positioning device 210 can determine the actual or relative positioning by using a satellite navigation positioning system (e.g., GPS system, Galileo positioning system, global navigation satellite system (GLONASS), Beidou satellite navigation and positioning system), an inertial navigation system, a dead reckoning system, based on an IP address, by using triangulation and / or proximity to a cellular tower or WiFi hotspot, and / or other appropriate techniques for determining positioning.
[0030] As the player moves around with the client 120 in the real world, the positioning device 210 tracks the position of the player's client device 120 and provides the client device position information to the game module 220. The game module 220 updates the player's position in the virtual world based on the coordinates of the position of the player's client device 120 in the real world. Thus, the game module 220 maintains a local state of the virtual world on the client device 120. The game module 220 can provide the player position information to the game server 110 via the network 130, so that the game server 110 maintains the overall game state with the updated player position and provides periodic updates to the game module 220 so that the local game state can reflect the overall game state.
[0031] The game module 220 communicates information about the virtual world with the user interface module 230. The user interface module 230 of the client device 120 builds and displays the components of the user interface of the client device 120. The user interface can display a depiction of the virtual world to the user, including components of the virtual world, such as virtual elements and virtual experiences received from the game module 220. The user interface module 230 can also display chat room locations in the virtual world and messages sent between users in the chat room. The user can interact with the client device 120 to engage with virtual elements, participate in virtual experiences, or talk in a chat room. For example, the user interface module 230 can display a view of the virtual world depicting points of interest, chat rooms, and other virtual experiences. The user of the client device 120 can interact with these components via the user interface to complete tasks, join chat rooms, or participate in raids, as well as other actions.
[0032] The local data repository 240 is one or more computer-readable media configured to store data used by the client device 120. For example, the local data repository 240 may store player location information tracked by the positioning device 210, a local copy of the current state of the parallel reality game, or any other appropriate data. Although the local data repository 240 is shown as a single entity, the data may be split across multiple media. In addition, the data may be stored elsewhere (e.g., in a distributed database) and accessed remotely via the network 130.
[0033] Figure 3 One embodiment of a game server 110 suitable for hosting a location-based parallel reality game is illustrated. In the illustrated embodiment, the game server 110 includes a general game module 310, a locator module 320, a region partitioning module 330, and a game database 340. In other embodiments, the game server 110 includes different or additional elements. In addition, the functions can be distributed among the elements in a manner different from that described.
[0034] The game server 110 may be configured to receive requests for game data from one or more client devices 120 (e.g., via remote procedure calls (RPCs)) and respond to these requests via the network 130. For example, the game server 110 may encode the game data in one or more data files and provide the data files to the client devices 120. In addition, the game server 110 may be configured to receive game data (e.g., player positions, player actions, player inputs, etc.) from one or more client devices 120 via the network 130. For example, the client devices 120 may be configured to periodically send player inputs, player positions, and other updates to the game server 110, which the game server 110 uses to update the game data in the game database 340 to reflect the changed conditions of the game. The game server 110 may also send game data, such as other player positions, chat room positions, and virtual element positions, to the client devices 120.
[0035] The universal game module 310 hosts location-based games for players and serves as an authoritative source for the current status of location-based games. The universal game module 310 receives game data (e.g., player input, player location, player action, player status, landmark information, etc.) from the client device 120 and incorporates the received game data into the overall location-based game for all players of the location-based game. Using the game data, the universal game module 310 stores the overall game state of the game, which can be sent to the client device 120 to update the local game state in the game module 220. The universal game module 310 can also manage the delivery of game data to the client device 120 via the network 130.
[0036] The locator module 320 may be part of or separate from the universal game module 310. The locator module 320 is configured to access data associated with real-world actions, analyze the data, and determine a virtual experience in the virtual world based on the data associated with the real-world actions. For example, the locator module 320 may modify the game data stored in the game database 340 to locate the virtual experience in the virtual world based on the data associated with the real-world actions. As an example, a sponsored virtual element may be located at a virtual location corresponding to the real-world location of a sponsor's store, restaurant, specialty store, etc. If the player makes a purchase, enters a code available at the real-world location, or takes another action at the real-world location action that meets specified criteria, a special virtual experience may be made available to the player in the parallel reality game.
[0037] The region division module 330 determines regions within the virtual world. The region division module 330 may divide the geographic regions of the virtual world into regions based on the real world data. In some embodiments, the geographic regions of the virtual world may correspond to the entire real world. In other embodiments, the geographic regions correspond to smaller portions of the real world, such as regions previously determined by the region division module 330 or regions identified by an operator (e.g., using a fence).
[0038] The region partitioning module 330 divides the geographic region into cells that cover portions of the geographic region. Cells are geometric shapes that divide a geographic region into smaller geographic regions. The size of a cell can be determined via input from a provider or based on the size of a geographic region. In some embodiments, a cell is an S2 cell, which is a hierarchical cell that divides a spherical region.
[0039] The region segmentation module 330 accesses real-world data for a geographic region from the game database 340. The real-world data may include population data, player density data, point of interest data, and terrain data, and corresponds to locations in the geographic region. The real-world data is further described with respect to the game database 340.
[0040] The regionalization module 330 assigns real-world data to cells in a geographic region and builds a graph of edges and nodes based on the cells. The regionalization module 330 places nodes in each cell (e.g., in the geographic center of the cell) and weights each node using real-world data. Each node is weighted by a node weight, which is the population size of the corresponding cell. In some embodiments, the regionalization module 330 may use different or additional real-world data for node weights. For example, in one embodiment, the node weight is a weighted combination of the population data, player density data, terrain data, and / or number of points of interest of the corresponding cell. In some other embodiments, the node weight may include global population data that is re-weighted by estimating the user participation percentage of each cell based on the rural or urbanization level of the cell. The regionalization module 330 connects the nodes of adjacent cells using edges and weights each edge by edge weights. In one embodiment, the edge weight is the difference of the node weights of the nodes connected by the edge. Alternatively, the edge weights may be a weighted combination of the differences between different elements of real-world data (e.g., player density and population density) assigned to each of the neighboring cells of the connected node. The structure of the graph created by the region partitioning module 330 will be combined with Figure 4A-4B Further description is given.
[0041] The region partitioning module 330 constructs a spanning tree (e.g., a maximum spanning tree) based on a graph of a geographic region. The maximum spanning tree contains nodes of the graph connected by a subset of the edges of the graph such that the total edge weight of all edges in the maximum spanning tree is maximized. In addition, the maximum spanning tree has no loops between nodes, which occur when a set of edges in the maximum spanning tree creates two different paths connecting the same pair of nodes. Starting with the nodes of the graph as a forest, the region partitioning module 330 adds edges to connect the nodes in the forest to construct the maximum spanning tree.
[0042] In one embodiment, the region partitioning module 330 uses the Kruskal algorithm to determine which edges to add to the forest. In this embodiment, the region partitioning module 330 determines the edge of the graph that forms a loop between nodes that are not in the forest and has the highest weight (i.e., population difference), and adds the edge to the forest. The region partitioning module 330 then determines the edge with the second highest weight in the graph, and if the edge does not form a loop, adds the edge to the forest. If the graph contains multiple edges of the second highest weight that do not form a loop, the region partitioning module 330 can randomly select one of these edges to add to the forest. The region partitioning module 330 iterates, adding edges to the forest until all nodes in the forest are connected and a maximum spanning tree is formed.
[0043] In another embodiment, the region partitioning module 330 uses Prim's algorithm to determine which edges to add to the forest. In this embodiment, the region partitioning module 330 randomly selects a node in the graph as a parent node. Starting again from the forest of nodes in the graph, the region partitioning module 330 determines which edge connected to the parent node that does not form a loop has the highest weight, and adds that edge to the forest. The region partitioning module 330 then determines the edge with the second highest weight connected to any node in the forest, and adds that edge to the forest, as long as the edge does not form a loop between nodes in the forest. The region partitioning module 330 iterates about adding edges to the forest until all nodes in the forest are connected and a maximum spanning tree is formed. In other embodiments, the region partitioning module 330 may use other algorithms to generate a spanning tree.
[0044] In some embodiments, before constructing the maximum spanning tree, the region partitioning module 330 removes nodes from the graph based on real-world data. For example, the region partitioning module 330 determines which units of the geographic region are associated with terrain data indicating that the corresponding portion of the geographic region is covered by water, and removes the nodes associated with the unit from the graph. In some embodiments, the region partitioning module 330 only removes nodes associated with a threshold percentage of water in the corresponding portion of the geographic region. In other embodiments, the region partitioning module 330 also removes nodes associated with terrain data indicating that the player is difficult to cross (such as mountains or canyons). Then, the region partitioning module 330 uses the nodes from the remaining graph to construct the maximum spanning tree to avoid determining the area covered by water for the parallel reality game. The region partitioning module 330 divides the maximum spanning tree into continuous segments. A continuous segment is a grouping of nodes connected within the maximum spanning tree. Each continuous segment corresponds to a portion of the geographic region covered by the units of the nodes of the continuous segment. The region partitioning module 330 determines the number of continuous segments into which the maximum spanning tree will be segmented, and based on the total population and the number of continuous segments, determines the minimum population corresponding to each continuous segment. Thus, each contiguous segment corresponds to a minimum population size based on the node weights of the nodes of the contiguous segment. In some embodiments, each contiguous segment meets other criteria related to node weights, such as containing a minimum number of players or a minimum number of points of interest. Additional criteria may require that a contiguous segment corresponds to a minimum area size or specific terrain data.
[0045] In one embodiment, to form a continuous segment, the region partitioning module 330 selects each leaf node of the maximum spanning tree. A leaf node is a node in the maximum spanning tree that is only connected to another node in the maximum spanning tree, which is called the parent node of the leaf node. The region partitioning module 330 compares the node weight of each leaf node with the minimum population size (or other node weight related criteria). If the leaf node has a node weight greater than the minimum population size, the region partitioning module 330 removes the leaf node from the maximum spanning tree to form a continuous segment. If not greater than, the region partitioning module 330 merges the leaf node with its parent node into the maximum spanning tree. In order to merge a leaf node into its parent node, the region partitioning creates a merged node to replace the parent node, and the merged node has a node weight that is the sum of the node weight of the leaf node and the node weight of the parent node. This process is about Figure 5A-5H For further explanation, the region partitioning module 330 continues to compare the node weights of the leaf nodes with the minimum population size and removes or merges the leaf nodes until a threshold number of continuous segments have been formed. The region partitioning module 330 uses the remaining nodes of the maximum spanning tree as the final continuous segments.
[0046] In some embodiments, if the region partitioning module 330 runs out of leaf nodes for merging to split the continuous segment according to the maximum spanning tree, the region partitioning module 330 generates a new maximum spanning tree based on the remaining graph (i.e., the deleted nodes without the continuous segment) to split the continuous segment according to it. Using the graph of the remaining maximum spanning tree, the region partitioning module 330 reweights each edge of the graph. In some embodiments, the region partitioning module 330 reweights each edge with an edge weight that is a random percentage of its previous edge weight. The region partitioning module 330 uses the reweighted graph to generate a new maximum spanning tree and splits the continuous segment according to the new maximum spanning tree.
[0047] The region partitioning module 330 adjusts the contiguous segments to improve the shape of the portion of the geographic area associated with each contiguous segment. For each pair of contiguous segments, the region partitioning module 330 combines the contiguous segments in the pair into a new graph, forms a maximum spanning tree of the graph based on the weights, and splits the maximum spanning tree into two new contiguous segments. The region partitioning module 330 scores each new contiguous segment and each contiguous segment from the pair using a compactness score to determine whether the new contiguous segment improves the compactness of the portion of the geographic area covered by the pair of contiguous segments. In some embodiments, the region partitioning module 330 uses Formula 1 to determine the compactness score of each contiguous segment, where nsegment is the number of cells of the contiguous segment, and nboundary is the number of cells of the contiguous segment that create an internal boundary within the contiguous segment.
[0048]
[0049] In some other embodiments, the region partitioning module 330 determines the compactness score of each continuous segment using Formula 2, where R is the continuous segment, Ω is the set of cells in the continuous segment that form the internal boundary inside the continuous segment, and wv is the node weight of each node in the continuous segment.
[0050]
[0051] The region partitioning module 330 compares the compactness score of the new continuous segment with the compactness score of the continuous segments of the pair. If the new continuous segment has a higher compactness score than the continuous segments of the pair, the region partitioning module 330 replaces the continuous segments of the pair with the new continuous segment. In some embodiments, the region partitioning module 330 determines the average compactness score of the new continuous segment and the continuous segments from the pair, and uses the average compactness score to determine whether to retain or replace the continuous segments from the pair. In some embodiments, the region partitioning module 330 adjusts the continuous segments until each continuous segment reaches a threshold compactness score. In some other embodiments, the region partitioning module 330 adjusts the continuous segments until the region partitioning module 330 has calculated the compactness score of each pair of continuous segments without replacing any continuous segments.
[0052] The region partitioning module 330 merges adjacent continuous segments that do not satisfy a set of constraints. The set of constraints includes a minimum area and a minimum population size associated with each continuous segment. In some embodiments, the set of constraints may also include a minimum number of points of interest associated with a portion of a geographic region of the relevant continuous segment, or include a minimum amount of traversable area associated with a continuous segment based on terrain data. The region partitioning module 330 identifies a continuous segment that does not satisfy the set of constraints and merges the continuous segment with each of its adjacent continuous segments (i.e., surrounding the continuous segment in the figure). The region partitioning module 330 re-segments the merged continuous segment into a new set of continuous segments, which has any of the following: one less continuous segment than the number of continuous segments being merged; the number of possible continuous segments for the portion of the geographic region where the continuous segment is merged given a minimum area constraint; or the number of possible continuous segments for the portion of the geographic region where the continuous segment is merged given a minimum population constraint.
[0053] The region division module 330 determines the geographic region corresponding to each continuous segment and defines each geographic region as a region for the parallel reality game. The region division module 330 stores each region in the game database 340, or in some embodiments, in another data repository. The region division module 330 can use these regions for a given time period (e.g., a day, a month, a year, etc.), and can periodically update the regions when the game server 110 receives more real-world data.
[0054] In some embodiments, the region partitioning module 330 regards the defined region as a set of first-order regions and determines a set of second-order regions for each first-order region. For each first-order region, the region partitioning module 330 divides the first-order region into second-order cells, the second-order cell size being smaller than the cell for the first-order region. The region partitioning module 330 assigns real-world data to cells, constructs a second-order graph of nodes and edges, and generates a second-order maximum spanning tree based on the second-order graph. The region partitioning module 330 uses a smaller minimum population (the smaller minimum population can be a factor of the number of smaller continuous segments) to divide the graph into a set of second-order continuous segments, and defines and stores the geographic regions corresponding to the second-order continuous segments as second-order regions. The region partitioning module 330 can iterate when determining a higher-order region in a previously determined region until a set of criteria is met, such as covering less than a threshold portion of a geographic region or corresponding to less than a threshold population size. In some embodiments, the region partitioning module 330 can define regions for parallel reality games at different orders until it reaches a threshold number of regions (each of which meets a set of criteria). For example, the region partitioning module 330 may determine that a subset of the set of first-order regions satisfies the set of criteria, and determine a set of second-order regions only for the regions in the set of first-order regions that do not satisfy the set of criteria. The region partitioning module 330 may continue to hierarchically partition the geographic region by determining sets of higher-order regions until all defined regions satisfy the set of criteria.
[0055] The region division module 330 can assign chat rooms or any other appropriate game elements, experiences or mechanisms to the regions. For example, in one embodiment, the region division module 330 creates a chat room for each region so that players can join the chat room assigned to the region they are currently in, or can join a different chat room when moving to another region. In another example, the region division module 330 assigns virtual competitions to each region so that players in the region can compete with each other to obtain rewards. In another embodiment, the region division module 330 periodically calculates the score for each region (e.g., by adding the scores obtained by all players or all players in the team in the region), and provides rewards in the region where the corresponding score exceeds a threshold or exceeds the score of one or more adjacent regions. Those skilled in the art will recognize the various ways in which regions can be used in parallel reality games.
[0056] The game database 340 includes one or more machine-readable media configured to store game data used in the location-based game to be served or provided to the client device 120 via the network 130. The game data stored in the game database 340 may include: (1) data associated with the virtual world in the location-based game (e.g., image data for presenting the virtual world on a display device, geographic coordinates of locations in the virtual world, etc.); (2) data associated with players of the location-based game (e.g., player information, player experience level, player currency, player inventory, current player location in the virtual world / real world, player energy level, player preferences, team information, etc.); (3) data associated with game objectives (e.g., data associated with the current game objective, the status of the game objective, past game objectives, future game objectives, expected game objectives, etc.); (4) data associated with virtual elements in the virtual world (e.g., the location of the virtual element, the type of the virtual element, the game objective associated with the virtual element, the virtual element's The game database 340 may include data associated with real-world locations, behaviors of virtual elements, relevance of virtual elements, etc.); (5) data associated with real-world objects, landmarks, and locations linked to virtual-world elements (e.g., locations of real-world objects / landmarks, descriptions of real-world objects / landmarks, relevance of virtual elements linked to real-world objects, etc.); (6) game status (e.g., current number of players, current status of game objectives, player leaderboards, etc.); (7) data associated with player actions / inputs (e.g., current player location, past player location, player movement, player input, player queries, player communications, etc.); (8) data associated with virtual experiences (e.g., locations of virtual experiences, player actions related to virtual experiences, virtual events such as raids, etc.); and (9) any other data used, associated, or acquired during implementation of location-based games. The game data stored in the game database 340 may be populated by a system administrator offline or in real time, or by data received from players, such as data received from one or more client devices 120 via the network 130.
[0057] The game database 340 may also store real-world data. The real-world data may include: population density data describing the gathering locations of individuals in the real world; player density data describing the gathering locations of players in the real world; player actions associated with locations of cultural or commercial value; player heat map data describing the distribution of game actions in a geographic area; point of interest data describing real-world locations corresponding to the locations of virtual elements in the virtual world; terrain data describing the locations of various terrain and ecological conditions, such as large bodies of water, mountains, canyons, etc.; map data providing the locations of roads, highways, and waterways; current and past locations of individual players; hazard data; weather data; event calendar data; player activity data (e.g., travel distance, exercise minutes, etc.); and other appropriate data. The real-world data may be collected or obtained from any appropriate source. For example, the game database 340 may be coupled to, include, or be part of a map database storing map information, such as one or more map databases accessed by a map service. As another example, the game server 110 may be coupled to one or more external data sources or services that periodically provide population data, hazard data, weather data, event calendar data, etc.
[0058] Apart from Figure 3 Other modules outside the modules shown in can be used together with game server 110.Any number of modules can be programmed or otherwise configured to implement the server-side functionality described herein.In addition, the various components of the server-side can be rearranged.According to the present disclosure, other configurations will be obvious, and the present disclosure is not intended to be limited to any particular configuration.
[0059] Example of Region Division
[0060] Figure 4A-4B 4. A graph is shown that converts cells 410 of a subset 400 of geographic regions into nodes 420 and edges 450, according to one embodiment. Figure 4A Only a subset of the geographic region is shown in FIG, but the region partitioning module 330 divides the entire geographic region into a set of cells 410, each covering a portion of the geographic region. The region partitioning module 330 places a node 420 at the center of each cell 410 in the geographic region and weights each node using real-world data from the game database 340. In this embodiment, the real-world data describes the player positions in each cell 410, and each node weight 430 is the number of player positions 440 in the associated cell. Figure 4BAs shown in , the region partitioning module 330 connects each node 420 in the geographic region with an edge 450 to create a graph for the geographic region. The region partitioning module 330 weights each edge 450 by an edge weight 460, which is the difference between the node weights 420 in this embodiment.
[0061] Figure 5A-5H FIG. 5 shows an example of segmenting a graph 600 of a geographic region into continuous segments according to one embodiment. The region partitioning module 330 maps the geographic region to a set of nodes 420 and edges 450 to create the graph 500, such as Figure 5A Each node is associated with a node weight 430 based on real-world data (such as the population of the corresponding unit), and each edge 450 is associated with an edge weight 460, which is the difference of the node weights 430 of the nodes 420 connected by the edge 450.
[0062] The region partitioning module 330 creates a maximum spanning tree 510A according to the graph 500, such as Figure 5B The maximum spanning tree connects all nodes 420 of the graph 500 using a subset of edges 450 with the highest edge weights 450. The region partitioning module 330 can use different methods to create the maximum spanning tree 510A, so in some other embodiments, the region partitioning module 330 can generate different versions of the maximum spanning tree 510A based on the same graph 500.
[0063] To determine the continuous segments to be segmented according to the graph 500, the region segmentation module 330 analyzes Figure 5C Each leaf node in the leaf node 520A of the maximum spanning tree 510B shown in . Each leaf node 520A is connected to only one other node, which is the parent node 530A of the leaf node 520A. The region partitioning module 330 determines whether the node weight 430 of each leaf node 520A is greater than a node weight related standard (such as a minimum population size). In this example, the region partitioning module 330 uses a minimum node weight of twenty for the node weight related standard.
[0064] Since the leaf nodes 520A of the maximum spanning tree 510A do not meet the node weight related standards, the region division module 330 merges each leaf node 520A into its parent node 530A to generate a new maximum spanning tree 510C. Figure 5D500. The maximum spanning tree 510C has a new set of leaf nodes 520B and parent nodes 530B. Each new leaf node 520B has a node weight 430 that is a combination of the node weight 430 of the previous corresponding leaf node 520A and the node weight 430 of the parent node 530A. Each previous leaf node 520A is represented by a merged node 540A that covers a portion of the graph 500 but does not contribute weight to the maximum spanning tree 510C.
[0065] Again, the leaf nodes 520B of the maximum spanning tree 510B do not meet the node weight related standards, so the region partitioning module 330 merges each leaf node 520B into its parent node 530B to generate a new maximum spanning tree 510D. The maximum spanning tree 510D has a new set of leaf nodes 520C and parent nodes 530C. Figure 5E The maximum spanning tree 510E also includes branch nodes 550 , which are nodes 420 that are not leaf nodes 520 but are connected to one or more merged nodes 540 .
[0066] The maximum spanning tree 510D includes a leaf node 520C that satisfies the node weight-related criteria (i.e., has a node weight greater than 20), so the region partitioning module 330 disconnects the leaf node 520C that satisfies the node weight-related criteria from the maximum spanning tree 510C, such as Fig. 5F These leaf nodes 520C and the connected merge node 540 form two continuous segments 560. The remaining nodes 420 and edges 450 form a remaining maximum spanning tree 510E with a new leaf node 520D and a parent node 530D.
[0067] In this example, the region partitioning module 330 continues to partition the maximum spanning tree 510E into continuous segments 560 to reach a threshold number of three continuous segments 560. Figure 5G As shown in , the region partitioning module 330 merges each leaf node 520D into its parent node 530D, generating a new maximum spanning tree 510F having a set of leaf nodes 520E and parent nodes 530E. The maximum spanning tree 510F has a leaf node 520E that meets the node weight related criteria, so the region partitioning module 330 disconnects the leaf node 520E to create a new continuous segment 560C, and the new continuous segment 560C is in Figure 5H Since the region partitioning module 330 has reached the threshold number of three continuous segments 560, the region partitioning module 330 forms the remaining nodes into a final continuous segment 560D.
[0068] Figure 6A-6GAn example of partitioning a first-order graph to determine a second-order graph according to one embodiment is illustrated. For a first-order region covering a geographic area, the region partitioning module 330 creates a first-order graph 600 of nodes 420 and edges 450, the first-order graph 600 corresponding to the unit that partitions the first-order region, such as Fig. 6A In some embodiments, the first-order region may span the entire real world, and the unit used to create the first-order map may be an S2 unit capable of mapping a spherical first-order region (ie, the Earth).
[0069] The region partitioning module 330 uses the first-order graph 600 to create a first-order maximum spanning tree 610. Figure 6B The maximum spanning tree 610 includes all nodes 420 in the nodes 420 of the first-order graph 600, but only includes a subset of the edges 450 of the first-order graph 600. Figure 6C As shown in , the region partitioning module 330 partitions the first-order maximum spanning tree 610 into continuous segments 640. Although only four continuous segments are shown in this embodiment, in some other embodiments, the region partitioning module 330 may partition the maximum spanning tree into more or fewer continuous segments based on a threshold number.
[0070] like Fig.6D As shown in , each continuous segment is mapped to a set of first-order cells 660 of the first-order region 650, and each first-order cell 660 covers the geographic area of the first-order region 650. The region partitioning module 330 defines the portion of the geographic area covered by the first-order cells 660 of each continuous segment 640 as a second-order region 670. Fig. 6E The second-order regions 670 , the region partitioning module 330 determines whether they each meet a set of criteria, such as covering less than a threshold portion of the first-order region 650 , or corresponding to a threshold percentage of the population of less than the first-order region 650 .
[0071] For each second-order region 670 that does meet the set of criteria, the region partitioning module 330 may store the second-order region in the game database 340 as a region for the parallel reality game. Otherwise, the region partitioning module 330 may partition each of the remaining second-order regions 670 into second-order units 680, such as Fig. 6F The region partitioning module 330 uses the nodes 420 and the edges 450 to create a second-order graph 690 for the second-order region 670A based on the second-order unit 680, as shown in FIG. Figure 6G The region partitioning module 330 may continue this hierarchical process of determining higher-order regions until each region satisfies the set of criteria.
[0072] Figure 77 is a flow chart illustrating a process 700 of dividing a geographic region into regions according to one embodiment. The region division module 330 divides 710 the geographic region into cells, where each cell corresponds to a portion of the geographic region. In some embodiments, the cells are S2 cells. The region division module 330 accesses the game database 340 to obtain real-world data and assigns 720 the real-world data to each of the cells. The real-world data may include population density data corresponding to the cells, player density data describing the locations of players of the parallel reality game in the geographic region, terrain data describing the location of water within the geographic region, and / or point of interest data describing real-world locations corresponding to the locations of virtual elements in the virtual world.
[0073] The region partitioning module 330 constructs 730 a graph including nodes and edges based on the cells of the geographic region. Each node corresponds to a cell, and each edge connects nodes corresponding to adjacent cells in the geographic region. The region partitioning module 330 partitions 740 the graph into continuous segments based on real-world data. In some embodiments, each continuous segment corresponds to an area including at least a minimum number of players and / or an area including at least a minimum number of points of interest. In some other embodiments, when partitioning the graph, the region partitioning module 330 determines the total population of at least some of the continuous segments based on population density data.
[0074] The region division module 330 defines 750 regions of the geographic region based on the continuous segments of the graph. In some embodiments, when defining the regions, the region division module 330 removes the portion of the geographic region corresponding to water in the region. In some other embodiments, when defining the regions, the region division module 330 merges a pair of continuous segments of the graph into a combined (or merged) segment, and re-segments the combined segment into a pair of re-segmented segments. If the re-segmented segment meets one or more criteria, the region division module 330 retains the re-segmented segment and uses the re-segmented segment to define the regions of the geographic region. The region division module 330 stores 760 the regions in the game database 340. In some embodiments, the region division module 330 stores the regions in another data repository associated with the game server 110.
[0075] In some embodiments, Figure 7The process 700 is iterative. In these embodiments, the region partitioning module 330 partitions the graph into a set of first-order continuous segments. For each stage, the region partitioning module 330 partitions the first-order continuous segments into a set of second-order continuous segments. In addition, the iterative process 700 can use the region partitioning module 330 to generate a first continuous segment according to the graph. In order to generate the first continuous segment, the region partitioning module 330 selects a node of the graph. The region partitioning module 330 iteratively merges the nodes connected to the selected node into the selected node. For each iteration, the region partitioning module 330 determines the set of nodes connected to the selected node by the edge on the graph, and merges the nodes in the node set into the selected node based on the edge weight of the edge connecting the node set to the selected node. The region partitioning module 330 merges nodes until the region partitioning module 330 has formed the first continuous segment.
[0076] The region partitioning module 330 determines whether the first continuous segment satisfies one or more criteria. If the continuous segment does meet the one or more criteria, the region partitioning module 330 removes the first continuous segment from the graph and generates a second continuous segment based on the remaining graph. In some embodiments, if the continuous segment does not meet the one or more criteria, the region partitioning module 330 generates new edge weights for the edges of the graph and regenerates the first continuous segment based on the new edge weights.
[0077] Figure 8 is a block diagram according to one embodiment, which illustrates a suitable Figure 1 Specifically, Figure 8 A diagrammatic representation of a machine is shown in the example form of a computer system 800. The computer system 800 may be used to execute instructions 824 (e.g., program code or software) to cause the machine to perform any one or more of the methods (or processes) described herein, including those methods (or processes) associated with and described in connection with components (or modules) of the game server 110 or the client device 120.
[0078] The machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a set-top box (STB), a smart phone, a network router, a switch or bridge, a cellular phone tower, or any machine capable of executing instructions 824 (sequentially or otherwise) that specify actions to be taken by the machine. Furthermore, while only a single machine is shown, the term "machine" should also be understood to include any collection of machines that individually or jointly execute instructions 824 to perform any disclosed method.
[0079] The example computer system 800 includes one or more processing units (typically one or more processors 1002). The processor 802 is, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a controller, a state machine, one or more application specific integrated circuits (ASICs), one or more radio frequency integrated circuits (RFICs), or any combination of these. Any reference to the processor 802 may refer to a single processor or multiple processors. The computer system 800 also includes a main memory 804. The computer system may include a storage unit 816. The processor 802, the memory 804, and the storage unit 816 communicate via a bus 808.
[0080] In addition, the computer system 800 may include a static memory 806, a display driver 810 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector). The computer system 800 may also include an alphanumeric input device 812 (e.g., a keyboard), a cursor control device 814 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing tool), a signal generating device 818 (e.g., a speaker), and a network interface device 820, which are also configured to communicate via the bus 808.
[0081] The storage unit 816 includes a machine-readable medium 822 that can store instructions 824 (e.g., software) for performing any of the methods or functions described herein. The instructions 824 can also reside, in whole or in part, within the main memory 804 or within the processor 802 (e.g., within a cache memory of the processor) during execution by the computer system 800. The main memory 804 and the processor 802 also constitute machine-readable media. The instructions 824 can be transmitted or received over the network 130 via the network interface device 820.
[0082] Although the machine-readable medium 822 is shown as a single medium in the example embodiment, the term "machine-readable medium" should be understood to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) that can store the instructions 824. The term "machine-readable medium" should also be understood to include any medium that can store the instructions 824 for execution by a machine and cause the machine to perform any one or more of the methods or functions disclosed herein. The term "machine-readable medium" includes, but is not limited to, data repositories in the form of solid-state memories, optical media, and magnetic media.
[0083] Although the subject matter has been described in detail with respect to specific exemplary embodiments and methods thereof, it should be understood that after obtaining an understanding of the foregoing, those skilled in the art can easily generate alternatives, modifications, and equivalents to such embodiments. Therefore, the scope of the present disclosure is by way of example rather than by way of limitation, and the subject disclosure does not exclude the inclusion of such modifications, modifications, or additions to the subject matter, as will be readily apparent to those skilled in the art.
[0084] Other considerations
[0085] Some parts of the above description describe embodiments in terms of algorithmic processes or operations. These algorithmic descriptions and representations are often used by those skilled in the art of computing to effectively communicate their work content to other skilled in the art. Although these operations are described functionally, computationally, or logically, they should be understood to be implemented by computer programs, which include instructions, microcodes, etc. for execution by processors or equivalent circuits, etc. In addition, without loss of generality, it is sometimes convenient to refer to the arrangement of these functional operations as modules.
[0086] References to servers, databases, software applications, and other computer-based systems, as well as actions taken and information sent to and from these systems, are provided to illustrate various concepts. Those skilled in the art will recognize that the inherent flexibility of computer-based systems allows for a variety of possible configurations, combinations, and divisions of tasks and functions between and among components. For example, server processes can be implemented using a single server or multiple servers working in combination, databases and applications can be implemented on a single system or distributed across multiple systems, and distributed components can operate sequentially or in parallel.
[0087] In the event that the system and method access and analyze personal information about the player (such as location information), the player may be provided with an opportunity to control whether the program or feature collects the information. Such information or data will not be collected or used until the player is provided with meaningful notice of what information is to be collected and how the information is to be used. Information will not be collected or used unless the player provides consent (which the player can revoke or modify at any time). Thus, the player can control how the application or system collects and uses information about the player. In addition, certain information or data may be processed in one or more ways before it is stored or used to anonymize it. For example, the player's identity may be processed so that personally identifiable information about the player cannot be determined.
[0088] As used herein, any reference to "one embodiment" or "embodiment" means that a particular element, feature, structure or characteristic described in conjunction with the embodiment is included in at least one embodiment. The phrase "in one embodiment" appearing in various places in the specification does not necessarily refer to the same embodiment. Similarly, the use of "one" or "an" before an element or component is just for convenience. The description should be understood to mean that one or more elements or components in an element or component are present unless it is obvious that it has another meaning.
[0089] When values are described as "approximately" or "substantially" (or derivatives thereof), these values should be interpreted as being accurate + / - 10%, unless another meaning is obvious from the context. For example, "approximately 10" should be understood as "within the range of from 9 to 11".
[0090] As used herein, the terms "comprise," "include," "having," or any other variation thereof, are intended to cover non-exclusive inclusion. For example, a process, method, article, or apparatus that includes a list of elements is not necessarily limited to only those elements, but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. In addition, unless expressly stated to the contrary, "or" refers to an inclusive or, not an exclusive or. For example, a condition A or B is satisfied by any of the following: A is true (or exists) and B is false (or does not exist), A is false (or does not exist) and B is true (or exists), and both A and B are true (or exist).
[0091] After reading this disclosure, those skilled in the art should understand additional alternative structural and functional designs for systems and processes for processing transactions using self-organizing neural networks. Therefore, although specific embodiments and applications have been illustrated and described, it should be understood that the subject matter described is not limited to the precise configurations and components disclosed. The scope of protection should be limited only by the appended claims.
Claims
1. A method for dividing a geographical area into regions, the method comprising: dividing the geographic area into cells, each cell corresponding to a portion of the geographic area; assigning real-world data to the cells, the real-world data for the cells indicating attributes of the corresponding portion of the geographic region; constructing a graph including nodes and edges, wherein the nodes correspond to the cells, and the edges connect nodes corresponding to adjacent cells; segmenting the graph into consecutive segments based on the real-world data using an iterative process; defining regions of the geographic area based on the continuous segments of the map; as well as The defined regions are stored in a data repository.
2. The method of claim 1 , wherein the real-world data comprises population density data corresponding to the cells, and wherein segmenting the graph into consecutive segments comprises: A total population of at least some of the consecutive segments is determined based on the population density data.
3. A method according to claim 1, wherein the real-world data includes player density data, which describes the locations of players of the parallel reality game within the geographic area, and wherein each continuous segment corresponds to an area that includes at least a minimum number of players.
4. The method of claim 1 , wherein the real world data includes topographic data describing the location of water within the geographic area, and wherein defining the area of the geographic area includes: Portions of the geographic area corresponding to water are removed from the area.
5. The method of claim 1 , wherein the real-world data includes point-of-interest data describing real-world locations corresponding to locations of virtual elements in the virtual world, and wherein each contiguous segment corresponds to an area that includes at least a minimum number of points of interest.
6. The method of claim 1, wherein the iterative process comprises: partitioning the graph into a set of first-order continuous segments; as well as For each first-order continuous segment, the first-order continuous segment is divided into a set of second-order continuous segments.
7. The method of claim 1, wherein defining regions of the geographic region based on the consecutive segments of the graph comprises: combining a pair of consecutive segments of the graph to obtain a combined segment; resegmenting the combined segment into a pair of resegmented segments; as well as In response to the re-segmented segment satisfying one or more criteria, the re-segmented segment is retained for use in defining an area of the geographic region.
8. The method of claim 1, wherein the iterative process comprises: generating a first continuous segment according to the graph; Responsive to the first continuous segment satisfying one or more criteria, removing the first continuous segment from the graph; as well as A second continuous segment is generated based on the remainder of the graph.
9. The method of claim 8, wherein generating the first continuous segment according to the graph comprises: selecting a node of the graph; Iteratively merge nodes connected to the selected node into the selected node, each iteration comprising: determining a set of a plurality of nodes connected to the selected node, the plurality of nodes being connected by edges in the graph; as well as Nodes in the set of multiple nodes are merged into the selected node based on weights of edges connecting the set of multiple nodes to the selected node.
10. The method of claim 9, wherein the edges are weighted by the real-world data, and generating the first continuous segment from the graph further comprises, in response to the first continuous segment not satisfying one or more criteria: generating new weights for the edges in the graph; and Based on the new weights, the first continuous segments are regenerated.
11. A non-transitory computer-readable storage medium comprising instructions executable by a processor, the instructions comprising: instructions for dividing the geographic area into cells, each cell corresponding to a portion of the geographic area; instructions for assigning real-world data to the unit, the real-world data for the unit indicating attributes of the corresponding portion of the geographic region; Instructions for constructing a graph including nodes and edges, the nodes corresponding to the cells, and the edges connecting nodes corresponding to adjacent cells; instructions for segmenting the graph into consecutive segments based on the real-world data using an iterative process; instructions for defining an area of the geographic region based on the continuous segments of the map; as well as Instructions for storing the defined region in a data repository.
12. The non-transitory computer-readable storage medium of claim 11, wherein the real-world data comprises population density data corresponding to the cells, and wherein the instructions for segmenting the graph into consecutive segments comprise: Instructions for determining a total population for at least some of the consecutive segments based on the population density data.
13. A non-transitory computer-readable storage medium according to claim 11, wherein the real-world data includes player density data, the player density data describing the location of players of the parallel reality game within the geographic area, and wherein each continuous segment corresponds to an area that includes at least a minimum number of players.
14. The non-transitory computer-readable storage medium of claim 11, wherein the real-world data includes topographic data describing the location of water within the geographic area, and wherein the instructions for defining the area of the geographic area include: Instructions for removing from the area a portion of the geographic area corresponding to water.
15. The non-transitory computer-readable storage medium of claim 11, wherein the real-world data includes point-of-interest data describing real-world locations corresponding to locations of virtual elements in the virtual world, and wherein each contiguous segment corresponds to an area that includes at least a minimum number of points of interest.
16. The non-transitory computer-readable storage medium of claim 11, wherein the instructions for segmenting the graph into consecutive segments based on the real-world data comprise: instructions for partitioning the graph into a set of first-order continuous segments; as well as Instructions for segmenting, for each first-order continuous segment, the first-order continuous segment into a set of second-order continuous segments.
17. The non-transitory computer-readable storage medium of claim 11, wherein the instructions for defining an area of the geographic region comprise: instructions for combining a pair of consecutive segments of the graph to obtain a combined segment; instructions for resegmenting the combined segment into a pair of resegmented segments; as well as Instructions for retaining the re-segment for use in defining an area of the geographic region in response to the re-segment satisfying one or more criteria.
18. The non-transitory computer-readable storage medium of claim 11, wherein the instructions to segment the graph into consecutive segments comprise: instructions for generating a first continuous segment from the graph; instructions for removing the first continuous segment from the graph in response to the first continuous segment satisfying one or more criteria; as well as Instructions for generating a second series of segments based on the remaining graph.
19. The non-transitory computer-readable storage medium of claim 18, wherein the instructions for generating the first continuous segment from the graph comprise: instructions for selecting nodes of the graph; Instructions for iteratively merging nodes connected to the selected node into the selected node, each iteration comprising: determining a set of a plurality of nodes connected to the selected node, the plurality of nodes being connected by edges in the graph; as well as Nodes in the set of multiple nodes are merged into the selected node based on weights of edges connecting the set of multiple nodes to the selected node.
20. The non-transitory computer-readable storage medium of claim 19, wherein the edges are weighted by the real-world data, and the instructions for generating the first continuous segment from the graph further comprise: instructions for generating new weights for the edges in the graph in response to the first continuous segment not satisfying one or more criteria; as well as Instructions for regenerating the first continuous segments based on the new weights.